R
rrrFer
хвостовая и правосторонняя - синонимы, не?Современные компиляторы давно научились оптимизировать хвостовую рекурсию.
Т.к. компиляторы научились, то и пишу я про ключи оптимизации, но вы ведь "как-бы" разделили применение ключей и "развернуть рекурсию в цикл":
,а если ж они умеют - то "к чему вы клоните" ? )Развернуть рекурсию в цикл,
pos ? a[pos-1]+1 : 0; Это условие выполняется постоянно, хотя реальная необходимость в нем только 1 раз.
пост-инкременты заменить на пред- (но это сомнительно, компиляторы уже научились это делать сами)
заюзать ключи оптимизации (я не шарю в этой теме, но может поможет)
не приведете пример или ссылку где не изменяя алгоритм заменяют не правостороннюю рекурсию циклом и получают выигрыш?Будет там слабый выйгрыш или даже офигенный пройгрыш, зависит только от ваших познаний.
ссылка на гугл хороша, но примеры в стиле "мы не будем использовать рекурсию, но будем ее эмулировать" не впечатляют совсем.
Добавлено:
да, они вообще много умеют, особенно в плане оптимизации циклов, или например, распраллеливания(тоже оптимизация, только под конкретную архитектуру).(но это сомнительно, компиляторы уже научились это делать сами)
можно почитать тут:
Ссылка скрыта от гостей
еще книжка хорошая есть:
Практикум «Оптимизирующие компиляторы» (на примере GCC) ПРОЕКТ «ИССЛЕДОВАТЕЛЬСКИЙ КОМПИЛЯТОР»
но она только в электронном виде вроде бы, в интернетах можно найти.
на интуите тоже есть курсы, но весьма унылые ИМХО.
Классическая книжка по теме у Касьянова, но че-то ИМХО она устарела, и терминология там весьма дивная.
Добавлено: а по распараллеливающим компиляторам погуглите проект ОРС(открытая распараллеливающая система), у них вот публикации по теме хорошие.