Access 2002

Получение точных результатов


Понятно, что одноразового выполнения теста недостаточно для получения надежного результата. Слишком уж много внешних факторов могут влиять на приложение, работающее в среде Windows. Поэтому, во-первых, сам тестируемый код нужно выполнить много раз подряд, а во-вторых, тест тоже нужно провести неоднократно. Только средний результат многих тестов можно будет назвать реальной оценкой производительности. Например, каждая из тестовых функций, рассматриваемых в этой главе, получает в качестве параметра длинное целое, указывающее, сколько раз она должна выполнить тестируемый код. Запускается таймер, и эта функция выполняется в цикле некоторое количество раз.  13.5 приведен код функции RunTests, которая сравнивает результаты двух таких тестов.

Для получения максимально точного результата функция RunTests выполняет первую функцию до тех пор, пока среднее время ее выполнения не станет достаточно стабильной величиной. Это делается очень простым способом: при каждом проходе цикла сравнивается текущее и предыдущее среднее время выполнения тестируемой функции. Когда эти два значения становятся достаточно близкими, цикл вызовов первой функции останавливается. Затем RunTests вызывает вторую функцию столько же раз, сколько вызывала первую, и сравнивает результаты. Благодаря этому вам не нужно гадать, сколько же раз требуется вызвать тестируемые функции для получения надежного результата.

Функция RunTests, которую вы найдете в модуле basRunTests, выполняет два теста и сравнивает их результаты. Ей передаются три параметра:

О strFuncl — строка с именем предположительно более медленной функции;

О strFunc2 — строка с именем предположительно более быстрой функции;

IngRepeatOp — длинное целое число, указывающее, сколько раз вы хотите выполнить код каждой тестируемой функции (этот параметр не обязателен и по умолчанию имеет значение 100000) .

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