Они построены на том допущении,
BOOL QueryPerformanceCounler(LARGE_INTEGER* pliCount);
Они построены на том допущении, что поток не вытесняется, поскольку высоко точные измерения проводятся, как правило, в очень быстро выполняемых блоках кода. Чтобы слегка упростить работу с этими функциями, я создал следующий С++ - класс:
class CStopwatch
{
public:
CStopwatch() { QueryPerformanceFrequency(&m_liPeifFreq), Start(); }
void Start() { QueryPerformanceCounter(&m_liPerfStart); }
_irt64 Now() const
{ // возвращает число миллисекунд после вызова Start
LARGE_INTEGER liPerfNow;
QueryPerformanceCounter(&liPerfNow);
return(((liPerfNow.QuadPart - m_liPerfStart.QuadPart) * 1000) / m_liPerfFreq.QuadPart);
}
private
LARGE_INTEGER m_liPerfFreq;
// количество отсчетов в секунду
LARGE_INTEGER m_liPerfStart;
// начальный отсчет
};
Я применяю этот класс так:
// создаю секундомер (начинающий отсчет с текущего момента времени)
CStopwatch stopwatch;
// здесь н помещаю код, время выполнения которого нужно измерить
// определяю, сколько времени прошло
__int64 qwElapsedTime = stopwatch Now();
// qwElapsedTime сообщает длительность выполнения в миллисекундах
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий