Это хорошая практика, чтобы поместить инвариантный код цикла вне цикла? - PullRequest
0 голосов
/ 24 мая 2018

Я изучаю движение инвариантного кода цикла как метод оптимизации кода при проектировании компилятора.Используемый пример:

for ( i=0; i<n; i++ )
buffer[i] = 10*i + x*x;

Может быть также оптимизирован для:

tmp = x*x
for (i=0; i<n; i++ )
buffer[i] = 10*i + tmp;

Чтобы избежать вычисления x * x более одного раза.

В учебной программеНапример, это решается бэкендом компилятора.

Мой вопрос заключается в том, является ли вообще хорошей практикой делать это явно в исходном коде (и является ли это более выгодным в некоторых языках, чем в других)?

...