Сроки функции в микросекундах - PullRequest
1 голос
/ 22 февраля 2012

Эй, ребята, я пытаюсь рассчитать время выполнения некоторых функций поиска, которые я написал, в микросекундах, и это должно занять достаточно много времени, чтобы отобразить 2 значащие цифры.Я написал этот код для определения времени моей функции поиска, но он кажется слишком быстрым.Я всегда получаю 0 микросекунд, если я не запускаю поиск 5 раз, тогда я получаю 1 000 000 микросекунд.Я задаюсь вопросом, неправильно ли я сделал свою математику, чтобы получить время в микросекундах, или есть какая-то функция форматирования, которую я могу использовать, чтобы заставить ее отображать две фиговые цифры?

clock_t start = clock();
index = sequentialSearch.Sequential(TO_SEARCH);
index = sequentialSearch.Sequential(TO_SEARCH);
clock_t stop = clock();
cout << "number found at index " << index << endl;
int time = (stop - start)/CLOCKS_PER_SEC;
time = time * SEC_TO_MICRO;
cout << "time to search = " << time<< endl;

Ответы [ 2 ]

3 голосов
/ 22 февраля 2012

Вы используете целочисленное деление в этой строке:

int time = (stop - start)/CLOCKS_PER_SEC;

Я предлагаю использовать тип double или float, и вам, вероятно, придется разыграть компоненты подразделения.

0 голосов
/ 22 февраля 2012

Используйте QueryPerformanceCounter и QueryPerformanceFrequency, предполагая, что вы на платформе Windows

здесь ссылка на мс КБ Как использовать QueryPerformanceCounter для временного кода

...