MyTetra Share
Делитесь знаниями!
Процедура сравнения скорости работы Процедур (Функций) VBA
Время создания: 16.03.2019 23:43
Раздел: Разные закладки - VBA - Access - msa.polarcom.ru - 17 Утилиты
Запись: xintrea/mytetra_db_adgaver_new/master/base/1532019430b29dko8wn2/text.html на raw.githubusercontent.com

Процедура сравнения скорости работы Процедур (Функций) VBA

Давно уже пользуюсь подобным , наглядно, и сразу видно какой из двух (3х-4х...) вариантов аналогичного кода быстрее работает.
Особенно хорошо помогает при обработке больших обьемов данных.


Пример отпечатает в Immediate окно (Ctrl + G в VBE - кто не знает) примерно такой результат:

---------------------------------------------------------

Тест-1 (100 000 000 повт.) работал: 00:00:02

Тест-2 (100 000 000 повт.) работал: 00:00:02

--------------------------------------------------------------




Процедура сравнения:

Private Sub esSpeedCompare()

'es 19.05.2003 - 25.03.2017 (LE)

'Процедура сравнения работы процедур или функций по скорости

'Пишет результат в Immediate окно

'--------------------------------------------------------------------

Dim intTest As Integer 'счетчик тестов

Dim lngReiterations As Long 'количество повторений теста

Dim l As Long 'счетчик повторений

Dim t As Date 'перменная таймера

Dim v As Variant 'для приема значений возвращаемых тестируемыми

Dim sTest$ 'На тестах может пригодиться


On Error GoTo esSpeedCompare_Err


'Установка количества повторений теста : много (считаем сразу тысячами...) - Только для быстрых

lngReiterations = CLng(1000) * 100000


'Отделяем линией от (возможных) предидущих результатов

Debug.Print vbCrLf & "---------------------------------------------------------"

'Запуск 2-х тестов

For intTest = 1 To 2

t = Now

For l = 1 To lngReiterations

Select Case intTest

Case 1 'ниже пишем певую тестируемую процедуру|функцию

v = l \ 3

Case 2 'ниже пишем вторую тестируемую процедуру|функцию

v = l * 3

End Select

Next l

'отчет.....

Debug.Print "Тест-" & intTest & " (" & Format$(lngReiterations, "#,###") & _

" повт.) работал: " & Format(Now - t, "hh:mm:ss")

Next intTest


esSpeedCompare_Bye:

Exit Sub


esSpeedCompare_Err:

Debug.Print "Процедура сравнения работы функций по скорости привела к ошибке:" & vbCrLf & _

Err.Description

Resume esSpeedCompare_Bye

End Sub




Achtung!
Если вы не знаете, что такое VBE, и слабо понимаете отличие Прцедуры от Функции, или ваша БД меньше 100 000 записей ...
ЭТО вам пока не нужно!

 
MyTetra Share v.0.65
Яндекс индекс цитирования