Общеизвестно, что для большинства алгоритмов выделение и освобождение данных в стеке происходит намного быстрее, чем в куче. В C++ разница в коде примерно такая
double foo[n*n]
vs.
double* foo = new int[n*n]
Но есть ли существенные отличия, когда речь идет о доступе и расчетах с данными, лежащими либо в куче, либо в стеке? т.е. есть ли разница в скорости
foo[i]
Код должен работать на нескольких разных архитектурах, поэтому пробовать и измерять не получится.