Я пытаюсь создать таймер для профилирования некоторых функций. Например,C++ точный таймер time.h boost :: posix_time
#include <date_time/posix_time/posix_time.hpp>
boost::posix_time::ptime t1, t2;
t1 = boost::posix_time::microsec_clock::local_time();
boost::this_thread::sleep(boost::posix_time::milliseconds(1000));
t2 = boost::posix_time::microsec_clock::local_time();
std::cout << to_simple_string(t1) << std::endl;
std::cout << to_simple_string(t2) << std::endl;
выхода я получаю это,
2012-Mar-04 08:21:24.760019
2012-Mar-04 08:21:25.760577
Фактическое время истекшее 1 вторых и 558 микро вторых, есть в любом случае, что я могу улучшить эту точность, чтобы сказать до 1 микросекунды ?
Я также пробовал что-то вроде этого, с компоновщиком -lrt.
#include <time.h>
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &timer_start);
boost::this_thread::sleep(boost::posix_time::milliseconds(1000));
clock_gettime(1CLOCK_PROCESS_CPUTIME_ID, &timer_end);
Однако компилятор возвращает семантическую ошибку для CLOCK_PROCESS_CPUTIME_ID. Сообщение об ошибке выглядит следующим образом.
Description Resource Path Location Type
Symbol 'CLOCK_PROCESS_CPUTIME_ID' could not be resolved _OVERVIEW.cpp /FUTETP/BACKEND line 32 Semantic Error
Не могли бы вы показать, как вы компилируете? (Полная командная строка компилятора) И какую ОС вы используете? – Mat
Вы, кажется, считаете, что это таймер, который является неточным. Вероятно, в вызове 'sleep' есть гораздо большая неточность. – interjay
@Mat, я использую eclipse на Fedora 15, gnu gcc 4.6. – 2607