Я разрабатываю компилятор для языка, похожего на Scheme, и читаю диссертацию Дибвига. В нем он говорит, что добился большей части своего прироста производительности, выделяя кадры вызовов в стеке, а не в куче. Есть несколько трюков, которые нужно сделать, чтобы реально сделать эту работу при наличии замыканий и продолжений.
Мой вопрос: откуда взялась эта производительность? Это только потому, что мы меньше загружаем сборщик мусора?
Другими словами: при условии, что у нас бесконечный объем памяти, будет ли стек выделенных кадров вызовов по-прежнему быстрее, чем выделенные кадры вызовов?