Здравствуйте, cserg, Вы писали:
C>Все у вас работает так как и должно. Магии здесь никакой нет. Замедление на 15% происходит, когда складываются 64 битные значения вместо 32 битных в цикле. Замедление в 2 раза происходит, когда inlining для Print отрубается после добавления cout перед циклом. В этом случае добавляется инструкция call в тело цикла. Проблема у вас в том, что цикл повторяется огромное число раз. Небольшое изменение в теле цикла сильно влияет на результат. Интересно, что это за задача такая в которой 100 млрд. итераций?
Странно просто, что компилятор делает call в цикле за вместо inlining Print. Как на это решение влияет cout перед циклом — не ясно. Но факт — влияет все же. Хотя ничто ему не мешает сделать все правильно.
100 млрд — это с потолка взятое число для примера. Но вообще подобное количество вычислений — далеко не редкость. Занимаюсь просто исследованием временных рядов. А там без огромных вычислений довольно туго, поэтому и облако и GPU в планах подключить. Многосуточные расчеты — обычное дело. Ну как и при мат. моделировании и расчетах физических свойств огромных по размерам сеток. Вообщем, задач загрузить под завязку даже суперкомрьютеры полно. Лишь бы не в лоб и со знанием дела.