Как найти время, затраченное на выполнение математической операции? - PullRequest
1 голос
/ 23 января 2011

Я пытаюсь создать программу, в которой мне нужно найти время, необходимое для выполнения математической функции. Предположим, я делаю вычисление a / b, тогда как я могу найти время, необходимое для завершения этого вычисления в миллисекундах? Пожалуйста, помогите мне

Ответы [ 2 ]

2 голосов
/ 23 января 2011

Обычный процесс состоит в том, чтобы сделать это много раз (скажем, 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)

Это позволяет вам дисконтировать стоимость самого цикла, поскольку вы измеряете как с измеряемой операцией, так и без нее.

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

0 голосов
/ 23 января 2011

Взгляните на библиотеку 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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...