Обычный процесс состоит в том, чтобы сделать это много раз (скажем, N
), а затем разделить время, затраченное на это N
.
Например, в псевдокоде:
count = 100000
startTime = secondsSinceStartOfDay()
for i = 1 to count
do nothing
duration = secondsSinceStartOfDay() - startTime
print "Milliseconds per NOP = ", (duration * 1000 / count)
startTime = secondsSinceStartOfDay()
for i = 1 to count
x = a/b
duration = secondsSinceStartOfDay() - startTime
print "Milliseconds per division = ", (duration * 1000 / count)
Это позволяет вам дисконтировать стоимость самого цикла, поскольку вы измеряете как с измеряемой операцией, так и без нее.
Вы должны быть осторожны с агрессивными оптимизаторами, которые могут решить, так как вы на самом деле не используете ничего из того, что вы рассчитываете, что он может оптимизировать код цикла из-за отсутствия. Я действительно видел, как это произошло. Само собой разумеется, вы должны понимать, что происходит под одеялом, если вы проводите измерения производительности.