2013-04-06 2 views
1
time_start(); 

int op = 0; 
for(int i = 1; i <= n; i++) 
    op += arr[i]*pow(x, i); 

time_stop(); 

Это часть кода, я хочу, чтобы измерить, TIME_START() и time_stop() функции просто сохранить часы() выход где-то, а затем Execution_time() возвращает разницу, давая время выполнения.Измерение короткое время выполнения

проблема в том, что для < 50000 выход равен 0 мс, или 1 мс. Это правильный вывод? Может быть, это более точно?

+1

На какой аппаратной архитектуре и ОС выполняется измерение? Дело в том, что на большинстве аппаратных средств и ОС часы будут иметь разрешение 10 мс. Вам нужно будет использовать «таймеры производительности», чтобы опуститься ниже этого. И это будет зависеть от аппаратного обеспечения и ОС. –

+0

Посмотреть это сообщение для windows: http://stackoverflow.com/questions/15720542/measure-execution-time-in-c-on-windows?rq=1 –

+0

Пожалуйста, просмотрите эту тему http://stackoverflow.com/questions/3557221/how-do-i-measure-time-in-C# comment3728541_3557274 –

ответ

1

Чтобы получить точные и измеримые результаты, вам нужно иметь достаточно «шкалы» между временем выполнения и разрешением вашего кода таймера. Самое простое решение состоит в том, чтобы повторять сотни (или тысячи) раз по небольшому фрагменту тестируемого кода.

Существуют возможные эффекты кеша любого подхода, поэтому убедитесь, что вы измеряете то, что вы на самом деле думаете.