Возможно ли, что присвоение нуля переменной занимает больше времени, чем цикл For с миллионом итераций?

Я получаю странный вывод из-за профилирования моего кода. Для основного вычисления кода он правильно показывает, что больше 70% времени было потрачено на эти части, но есть и другие интересные моменты. Следующая строка принимает% 5.8

int counter = 0 ; // %5.8 of total time

а следующий цикл For имеет меньшее потребление времени (nx = 800 и ny = 800)! Как это возможно? Была сделана картинка результата профилирования. enter image description here

Ответ 1

Лучший способ тестирования - присоединить профилировщик, но не запускать его еще. (Это похоже на профилировщик VS, который, как я знаю, сделает это.) Запустите код, затем запустите профайлер и запустите его снова (или несколько раз). Это даст вам гораздо лучшее представление о том, что делает код (если только вы не пытаетесь измерить начальную производительность).

Ответ 2

Я бы рискнул предположить, что это связано с компилятором JIT. попробуйте заставить ваш код работать через строку нарушения дважды и проверить, имеет ли он такое же влияние на производительность.