Как найти время, затраченное на выполнение математической операции?

1

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

  • 1
    Это займет около 0 миллисекунд, дать или взять немного. Почему ты хочешь знать?
Теги:
time

2 ответа

2
Лучший ответ

Обычный процесс заключается в том, чтобы делать это много раз (скажем, 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
    Вы также измеряете время выполнения цикла, которое будет иметь значение для такой быстрой операции.
  • 0
    Хороший вопрос, @starblue, модифицированный, чтобы позволить снизить стоимость цикла.
0

Посмотрите на библиотеку 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";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню