Код
#include "windows.bi"
type TimeMeasure ' класс TimeMeasure
private:
as LARGE_INTEGER m_frequency
as LARGE_INTEGER m_startTicks
public:
declare constructor
declare sub start()
declare function elapsed_ticks() as longint
declare function elapsed_min() as double
declare function elapsed_sec() as double
declare function elapsed_ms() as double
declare function elapsed_mks()as double
end type
constructor TimeMeasure() ' конструктор
QueryPerformanceFrequency(@m_frequency) ' получим частоту работы высокоточного счетчика
start() ' измеряем начальное время в конструкторе. может пригодиться для измерения скорости выполнения кода от начала чего либо
end constructor
sub TimeMeasure.start() ' метод получения начального времени
QueryPerformanceCounter(@m_startTicks) ' получим winapi функцией значение времени высокоточного счетчика
end sub
function TimeMeasure.elapsed_ticks() as longint ' функция получения времени в тиках после последнего вызова метода TimeMeasure.старт
dim as LARGE_INTEGER nowTicks = any
QueryPerformanceCounter(@nowTicks)
function = nowTicks.QuadPart - m_startTicks.QuadPart ' возвращаем разницу
end function
function TimeMeasure.elapsed_min() as double ' получение времени в минуьтах
dim as LARGE_INTEGER nowTicks = any
QueryPerformanceCounter(@nowTicks)
function = (nowTicks.QuadPart - m_startTicks.QuadPart) / m_frequency.QuadPart/60
end function
function TimeMeasure.elapsed_sec() as double ' получение времени в секундах
dim as LARGE_INTEGER nowTicks = any
QueryPerformanceCounter(@nowTicks)
function = (nowTicks.QuadPart - m_startTicks.QuadPart) / m_frequency.QuadPart
end function
function TimeMeasure.elapsed_ms() as double ' получение времени в миллисекундах
dim as LARGE_INTEGER nowTicks = any
QueryPerformanceCounter(@nowTicks)
function = ((nowTicks.QuadPart - m_startTicks.QuadPart) / m_frequency.QuadPart) * 1.e3
end function
function TimeMeasure.elapsed_mks()as double ' получение времени в микросекундах
dim as LARGE_INTEGER nowTicks = any
QueryPerformanceCounter(@nowTicks)
function = ((nowTicks.QuadPart - m_startTicks.QuadPart) / m_frequency.QuadPart) * 1.e6
end function
dim tm as TimeMeasure
sleep 6000
print tm.Elapsed_sec()
sleep