Могут быть (сильно зависящие от системы) проблемы с локальностью кэша и пропусками чтения / записи.Если вы запускаете вашу программу в стеке и данных кучи, то вполне возможно (в зависимости от вашей архитектуры кеша), что вы столкнетесь с большим количеством промахов кеша, чем если бы вы запустили ее полностью в одной непрерывной областистек.Вот статья Эндрю Аппеля (из SML / NJ) и Чжуна Шао, посвященная этой проблеме, где они исследуют именно это, потому что распределение стека / кучи является темой для реализации функциональных языков:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.3778
Они обнаружили некоторые проблемы с производительностью из-за ошибок записи, но предположили, что они будут решены с помощью достижений в кэшировании.
Так что я предполагаю, что для современного компьютера / сервера настольного компьютера это так, если только вы не сильно загруженыоптимизированный, специфичный для архитектуры код, который передает данные вдоль строк кэша, вы не заметите никакой разницы между обращениями к стеку и куче.Ситуация может отличаться для устройств с маленьким кэшем (например, контроллера ARM / MIPS), где игнорирование кэша в любом случае может привести к заметным эффектам производительности.