читерим |
[Apr. 20th, 2013|10:57 am] |
несколько волшебных движений пальцами — и акерман в XScheme волшебно отрабатывает за 7.0 вместо 12.5. собственно, соптимизирован некоторый частный вид tail calls. ещё надо привинтить оптимизатор named let.
вообще, любой call пересоздаёт environment. это плохо. в tail call можно не ебать себе мозг и заюзать существующий env. надо только проследить, чтобы env не сбежал в составе какого-нибудь замыкания. в принципе, если нигде нет вызова какой-нибудь функции с нашей внутренней лямбдой, использующей переменные этого окружения, то всё ок. компилятор всей информацией обладает, в принципе.
хотя тут уже просто напрашивается перепись компилятора на самой схеме. но я упорно это делать не хочу. |
|
|
хм |
[Apr. 20th, 2013|01:06 pm] |
оптимизатор named let ускорил циклы раз в 7. ну, это на чисто пустом цикле, понятно, на реальных самортизируется. но всё равно гуд. |
|
|