Access 2002

Создание таймера


Хотя в вашем распоряжении всегда имеется встроенная функция VBA Timer, для хронометрирования работы приложения она не подходит. Названная функция измеряет (начиная с полуночи) время в секундах с одинарной точностью, а для нашей работы это слишком неточно. Даже при измерении интервалов времени, которые больше одной секунды, все равно нужна большая точность. В Windows API есть функция timeGetTime, которая возвращает число миллисекунд, прошедших с момента запуска Windows, — ее мы вам и рекомендуем.

Для целей тестирования это не имеет особого значения, но Timer «сбрасывается» каждые 24 часа, тогда как timeGetTime обнуляет счетчик только через 49 дней. Конечно, если вы определяете длительность процесса, который выполняется в течение 49 дней, вас едва ли будут интересовать милли- секунды, но все-таки вы их получите.

Чтобы проверить каждый из предложенных путей оптимизации, вам понадобится механизм для запуска и остановки таймера. Мы разработали для этого специальный класс Stopwatch, включающий два полезных метода: StartTimer и StopTimer. Метод StartTimer вызывает функцию timeGetTime и сохраняет возвращаемое ею значение в защищенной переменной модуля IngStartTime. Этот метод следует явно вызывать перед выполнением любого кода, который вы хотите хронометрировать. На выходе из хронометрируемого фрагмента кода нужно применить метод StopTimer, который вернет значение времени, истекшего после вызова метода StartTimer.  13.4 приведены объявления и код обоих методов. А вот пример использования класса Stopwatch:

Оформлять код Stopwatch в виде класса необязательно, но такой прием позволяет создать несколько экземпляров таймера, и каждый из них будет фиксировать время выполнения отдельного фрагмента кода. Это особенно важно, когда интересующие вас фрагменты кода выполняются параллельно.

Комментарии закрыты