Измерение времени на хосте

Измеряю время на хосте тоже clock()'ом, однако он возвращает значения, кратные 10 000. Т.е. явно не получается сравнивать время работы. Да и тики мне кажется у них разные должны быть... Вопрос - чем лучше измерять время на хосте? (желательно без дополнительных зависимостей, пишу на куде)

Forums: 

sys/timeb.h

я использую :

  1. #include <sys/timeb.h>
  2.  
  3. // глобальные переменные
  4. struct timeb startTime;
  5. struct timeb endTime;
  6.  
  7. // возвращает разницу между событиями в миллисекундах
  8. long getTimeInMillis(struct timeb startTimePoint, struct timeb endTimePoint){
  9.         long timing = (endTimePoint.time - startTimePoint.time) * 1000;
  10.         if (endTimePoint.millitm < startTimePoint.millitm){
  11.                 timing += -(startTimePoint.millitm - endTimePoint.millitm);
  12.         }else {
  13.                 timing += endTimePoint.millitm - startTimePoint.millitm;
  14.         }
  15.         return timing;
  16. }

Перед событием ставим

  1. ftime(&startTime);

а после события ставим

  1. ftime(&endTime);

и затем передаем их в функцию.
Точность до миллисекунды (или 10 миллисекунд, не помню точно). На глаз так вроде верно меряет.

п.с. этов виндоуз конечно.

Система какая? Под Windows

Система какая?

Под Windows есть QueryPerformanceCounter, под Linux такое же можно ассемблерной вставкой сделать если хочется (ну и gettimeofday() формально дает микросекундное разрешение).

Но с измерением коротких интервалов надо быть *крайне* аккуратным, там есть масса подводных камней, лучше их просто не мерять (точнее, время то вы померяете с точностью до частоты процессора, но вот выводы из этого делать нужно осторожно).