VBA Excel. Функция MicroTimer

Пользовательская функция MicroTimer предназначена для более точного определения времени выполнения процедур VBA Excel, чем с помощью функции Timer.

Функция MicroTimer

MicroTimer – это пользовательская функция, которая использует вызовы Windows API для получения значений системного таймера высокого разрешения, который встроен в большинство процессоров. Автор функции – Чарльз Уильямс.

Пользовательская функция MicroTimer позволяет более точно определять время работы макросов и отдельных участков кода VBA Excel, чем функция Timer.

Объявление функций Windows API

Код объявления функций Windows API «getFrequency» и «getTickCount» для вставки в раздел «Declarations» модуля VBA Excel:

Код функции MicroTimer

Код пользовательской функции MicroTimer для размещения в любом месте программного модуля ниже раздела «Declarations»:

Функция MicroTimer

Пример размещения функции MicroTimer в стандартном модуле

Частота встроенного в процессор таймера – постоянная величина, зависящая только от вашего процессора. Узнать эту частоту можно с помощью следующего кода (функция Windows API «getFrequency» уже должна быть объявлена в разделе Declarations):

Код определения времени

Шаблон кода VBA Excel для определения времени работы процедур и отдельных участков кода с помощью функции MicroTimer:

Переменные:

  • StartTime – значение функции MicroTimer перед началом работы тестируемого кода.
  • ElapsedTime – время работы тестируемого кода в секундах.

Пример кода с MicroTimer

Пример кода VBA Excel для сравнения точности измерения времени работы цикла For… Next с помощью функций Timer и MicroTimer:

Значение переменной ElapsedTime преобразуется в тип данных Decimal (CDec), чтобы значение меньше единицы не преобразовывалось автоматически в экспоненциальную форму.

Один из результатов работы кода:

Сравнение точности измерений с помощью функций Timer и MicroTimer

Сравнение точности измерений с помощью функций Timer и MicroTimer

Как видно на скриншоте, при количестве итераций цикла 10000 и 100000, определить время выполнения цикла с помощью функции Timer не удалось.


Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.