2012-02-21 3 views
1

Эй, ребята, я пытаюсь найти некоторые функции поиска, которые я написал в микросекундах, и для этого требуется достаточно много времени, чтобы показать 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; 
+0

Обычно вы бы сделать гораздо больше звонков и взять среднее. –

+0

Да, я планирую добавить это позже, прямо сейчас, я просто пытаюсь заставить его работать. – Jonathan

+0

Обычное 'clock()' разрешение составляет примерно 10 мс, так что этого может быть недостаточно. Проверьте «» часы с высоким разрешением, если вам нужна более высокая точность. –

ответ

3

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

int time = (stop - start)/CLOCKS_PER_SEC; 

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

+0

Да, это решило. Я должен был это видеть. Спасибо, что указали это. – Jonathan