Я пытаюсь сделать программу, где мне нужно найти время для выполнения математической функции. Предположим, что я делаю вычисление a/b, то как я могу найти время, затраченное на завершение этого вычисления в миллисекундах? Пожалуйста, помогите мне
Обычный процесс заключается в том, чтобы делать это много раз (скажем, 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)
Это позволяет вам снизить стоимость самого цикла, так как вы измеряете как с измеряемой операцией, так и без нее.
Вам нужно быть осторожным с агрессивными оптимизаторами, которые могут решить, так как вы фактически не используете какой-либо материал, который вы вычисляете, чтобы он мог оптимизировать код цикла из-за существования. Я действительно видел это. Излишне говорить, что вы должны понимать, что происходит под обложками, если вы выполняете измерения производительности.
Посмотрите на библиотеку ctime.
#include<ctime>
#include<time.h>
clock_t t1=clock();
//Your calculation here
clock_t t2=clock();
cout<<"Time taken" << doubel(t2-t1) << "clock cycles";