C ++ Boost рассчитать время, проведенное в функции - PullRequest
1 голос
/ 18 июля 2011

Привет еще раз с вопросом о повышении: мне нужно вычислить время, потраченное на мою функцию в моей теме повышения: вот код:

boost::posix_time::microseconds tes( 12 );
int i = 0;
while( true )
{
    boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time( );

    myFunction( );

    boost::this_thread::sleep( tes );   

    boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time( );

    boost::posix_time::time_duration elapsed = end - start;
}

, поэтому я пробовал много раз, но время истекло time_duration всегда равно 0, я добавил, чтобы проверить функцию сна 12 микросекунд, так что в лучшем случае у меня будет 12 микросекунд, но все равно 0 .. Мне нужно сказать потоку, чтобы обновить таймер после времени чтения ??

спасибо

1 Ответ

4 голосов
/ 18 июля 2011

Согласно документации boost , local_time может не достичь разрешения на микросекундном уровне в системе Win32:

ptime microsec_clock :: local_time ()

Получитьместное время с использованием часов с разрешением менее секунды.В системах Unix это реализовано с использованием GetTimeOfDay.На большинстве платформ Win32 это реализовано с использованием ftime.Системы Win32 часто не достигают микросекундного разрешения через этот API.Если более высокое разрешение критично для вашего приложения, протестируйте свою платформу, чтобы увидеть достигнутое разрешение.

Возможно, единственный вариант - использовать таймер высокого разрешения (не переносимый)

...