Мощь и беспомощность автоматической оптимизации

http://pilesoska.ru/pyilesosyisakvafiltrom__Delfa.html          

Внос инвариантных функций из циклов


Инвариантными

называются функции, результат работы которых не зависит от параметров цикла и потому их достаточно вычислить всего один раз. Компиляторы, к сожалению, так не поступают, поскольку, транслируют все функции по отдельности и не могут знать какими побочными эффектами обладает та или иная функция (исключение составляют встраиваемые функции, непосредственно вживляемые в код программы).

Рассмотрим типичный пример:

for(a=0;a<strlen(s);a++) b+=s[a];



Содержание раздела