FreeBasic
Главная
Вход
Регистрация
Среда, 16.10.2024, 07:59Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Измеряем время
electrikДата: Воскресенье, 04.08.2013, 01:11 | Сообщение # 1
Полковник
Группа: Друзья
Сообщений: 182
Репутация: 3
Статус: Offline
Код
#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
 
haavДата: Воскресенье, 04.08.2013, 07:28 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1366
Репутация: 49
Статус: Offline
Хороший код, разместил на основном сайте.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
  • Страница 1 из 1
  • 1
Поиск: