Я пытаюсь показать на примере, что приращение префикса более эффективно, чем приращение постфикса.
В теории это имеет смысл: я ++ должен уметь возвращать неосновное исходное значение и, следовательно, хранить его, тогда как ++ я может возвращать добавочное значение без сохранения предыдущего значения.
Но есть ли хороший пример, чтобы продемонстрировать это на практике?
Я попробовал следующий код:
int array[100];
int main()
{
for(int i = 0; i < sizeof(array)/sizeof(*array); i++)
array[i] = 1;
}
Я скомпилировал его с помощью gcc 4.4.0 следующим образом:
gcc -Wa,-adhls -O0 myfile.cpp
Я сделал это снова, при этом приращение postfix изменилось на приращение префикса:
for(int i = 0; i < sizeof(array)/sizeof(*array); ++i)
В обоих случаях получается идентичный код сборки.
Это было несколько неожиданно. Похоже, что отключив оптимизацию (с -O0), я должен увидеть разницу, чтобы показать концепцию. Что мне не хватает? Есть ли лучший пример, чтобы показать это?