Как Убрать Цикл For Или Ускорить Вычисление

  • Автор темы Автор темы AlexVI
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Современные компиляторы давно научились оптимизировать хвостовую рекурсию.
хвостовая и правосторонняя - синонимы, не?
Т.к. компиляторы научились, то и пишу я про ключи оптимизации, но вы ведь "как-бы" разделили применение ключей и "развернуть рекурсию в цикл":
Развернуть рекурсию в цикл,

pos ? a[pos-1]+1 : 0; Это условие выполняется постоянно, хотя реальная необходимость в нем только 1 раз.

пост-инкременты заменить на пред- (но это сомнительно, компиляторы уже научились это делать сами)

заюзать ключи оптимизации (я не шарю в этой теме, но может поможет)
,а если ж они умеют - то "к чему вы клоните" ? )

Будет там слабый выйгрыш или даже офигенный пройгрыш, зависит только от ваших познаний.
не приведете пример или ссылку где не изменяя алгоритм заменяют не правостороннюю рекурсию циклом и получают выигрыш?
ссылка на гугл хороша, но примеры в стиле "мы не будем использовать рекурсию, но будем ее эмулировать" не впечатляют совсем.

Добавлено:
(но это сомнительно, компиляторы уже научились это делать сами)
да, они вообще много умеют, особенно в плане оптимизации циклов, или например, распраллеливания(тоже оптимизация, только под конкретную архитектуру).
можно почитать тут:
еще книжка хорошая есть:
Практикум «Оптимизирующие компиляторы» (на примере GCC) ПРОЕКТ «ИССЛЕДОВАТЕЛЬСКИЙ КОМПИЛЯТОР»
но она только в электронном виде вроде бы, в интернетах можно найти.
на интуите тоже есть курсы, но весьма унылые ИМХО.
Классическая книжка по теме у Касьянова, но че-то ИМХО она устарела, и терминология там весьма дивная.

Добавлено: а по распараллеливающим компиляторам погуглите проект ОРС(открытая распараллеливающая система), у них вот публикации по теме хорошие.
 
насколько я знаю ассемблеровские ставки могут помочь ускорить вычисление
 
Думаю нужно написать алгоритм отсекания комбинаций которые уже были использованы при пред идущем переборе. Что-то такое из ветвей циклов.Может использовать ф-цию стека, берет себе в какой-то последовательности из стека.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!