    В строках 19-25 реализуется еще одна функция-член TBench — Report(). В 
строке 21 переменной result ;исваивается результат наследованной функции-члена 
Time(). В строках 22-23 выводится сообщение о том, чтоо затраченное время слишком 
мало для того, чтобы его можно было верно оценить. (Если у вас возникло подобное 
сообщение, рекомендуется увеличить число тестов.) В строке 24 отображаются 
результаты измерений быстродействия в секундах. Для   того   чтобы   использовать   
класс  TBench,   следует   создать   объект   и   передать   функции-члену BenchmarkO 
число необходимых для выполнения тестов и адрес тестируемой функции. Затем следует 
вызвать функцию-член ReportO. В листинге 14.3 демонстрируется эта последовательность 
действий, и он может послужить оболочкой для необходимых вам измерений производительности. 
После компиляции модулей BENCH.CPP и BENCH.CPP требуется скомпоновать их с 
библиотечным файлом TCLASDBS.LIB, содержащим скомпилированный код класса TTimer. 
Если вы пользуетесь автономным компилятором, добавьте следующие две строки в файл 
TURBOC.CFG, находящийся в текущем каталоге: 

    3B-IC:\c 45\include 
    -LC:\c 45\lic 

    Затем из командной строки DOS введите следующую команду для компиляции 
модуля BENCH.CPP и тестовой программы TBENCH.CPP, использующей класс TBench. 

    с     teen h cen h cidss.lic 

    В дополнение к заданию имен файлов модулей TBENCH и BENCH предыдущая 
команда передаст компоновщику имя библиотечного файла ВС45 — BIDSS.LIB, в 
котором содержится скомпилированный код класса TTimer. Второй символ S в BIDSS 
означает малую (small) модель памяти, используемую в программах для DOS по 
умолчанию. (В главе 19 приводится более подробное объяснение использования 
моделей памяти в программировании для DOS и WINDOWS). Как уже отмечалось, 
класс TTimer, из которого выводится TBench, обращается к аппаратным средствам 
способом, не применимым для WINDOWS. Вы должны скомпилировать эту программу в 
качестве приложения для DOS.	

    ЗАМЕЧАНИЕ 

    Вы также можете скомпилировать TBENCH с помощью МАКЕ-файла TBENCH.МАК 
(текст которого здесь не приводится). Смените текущий каталог на тот, в 
котором хранится TBENCH GPP, и из командной строки DOS введите make 
-ftbench.mak Утилита Borland C++ MAKE EXE должна быть доступна для вызова по 
текущим установленным путям, и вам, возможно, придется скорректировать 
устройство и каталога в TBENCH.МАК. (См, главу 18 для того, чтобы больше 
узнать о МАКЕ ЕХЕ ) 

    Листинг 14.3. TBENCH.CPP (тестирование класса TBen h) 

    1:   #include <iostream.h> 
    2:   #include <stdio.h> 
    3:   #include "cen h.h" 
    4: 
    5:    #define NUMTESTS 20000 
    6: 
    7:   void Testfn(void); 
    8: 
    9:   main() 
   10:    { 
   11:       TBench test; 
    12: 
    13:	cout « "Testing sprintf() fun tion\n" ;
    14:	test.Benchmark(NUMTESTS,   Testfn); 
    15:	test. Report();                   
    16:	return 0;                            
    17:   } 
    18:	
    19:	void Testfn(void)             
    20:	{                                                               Ъ 
    21:	 char cuffer[80]; 
    22:	double d = 3.14159; 
    23: 
    24:	sprintf(cuffer,   "%1f".  d); 
    25:        } 


    В строке 11 объявляется объект класса TBench с именем test. Поскольку C++ 
вызывает конструктор объекта класса (который вызовет конструктор базового 
класса Timer), вы можете быть уверены, что объект test соответствующим образом 
проинициализирован и, следовательно, готов к употреблению. После вывода 
короткого сообщения программа вызывает функцию-член Benchraark() (строка 14) и 
передает число необходимых для 


    Глава 14. Объектно-ориентированное программирование 349 
