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