Access 2002

Точный результат


Если же вам нужен абсолютно точный результат, можете модифицировать тестовые процедуры таким образом, чтобы они сначала вычисляли время выполнения цикла, а затем вычитали его из времени выполнения теста, тогда вы будете получать чистое время работы тестируемого кода. Мы же не стали этого делать, не желая усложнять код тестовых процедур.

Для проведения собственного теста вам нужно модифицировать процедуру TestOOa, поместив внутрь цикла тестируемый код. Например, первый тест из набора, представленного классом OptnmzingTests, таков:

Внимательно просмотрев код наших тестов, вы обнаружите, что ни в одном из них не создается и не уничтожается объект Stopwatch, на который указывает переменная sw. Дело в том, что класс OptimizingTests делает это сам, в процедурах обработки своих событий Initialize и Terminate. Вместо того чтобы создавать и уничтожать объект Stopwatch в каждом тесте, гораздо удобнее пользоваться во всех тестах общим объектом.

Остается один важный вопрос: как это процедура RunTests ухитряется вызывать тестовые функции, зная только их имена, полученные в виде текстовых строк? Обычно в VBA имя вызываемой процедуры должно быть известно во время написания кода. Позднее связывание для вызовов процедур в VBA не поддерживается.

Или все же поддерживается? В VBA 6 (версии VBA, включенной в Office 2000, Office ХР и Visual Basic 6) вы найдете новую функцию — CallByName. Она позволяет задать объект и строку, содержащую имя его свойства или метода, к которому вы хотите обратиться. Кроме того, нужно задать тип интересующего вас члена класса (метод, процедура Property Get, Property Let или Property Set) в виде константы (VbMethod, VbGet, VbLet или Vbset). А еще можно задать последний, необязательный параметр типа Variant — массив значений, представляющих параметры вызываемого свойства или метода.

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