Возможно ли, что присвоение нуля переменной занимает больше времени, чем цикл 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.
попробуйте заставить ваш код работать через строку нарушения дважды и проверить, имеет ли он такое же влияние на производительность.