¦ pragma On(optimize_xjmp_space, use_reg_vars) ¦
¦ ¦
¦ MICROSOFT C 5.0 ¦
¦ : cl -DNO_ZERO_DIVIDE=1 -c -G2 -Fc ¦
¦ -Ox optbench.c ¦
¦ ¦
¦ MICROSOFT QUICKC 1.0 ¦
¦ : qcl -c -G2 -FPi87 -Ox d:\optbench.c ¦
¦ ¦
¦ WATCOM C 6.0 ¦
¦ : wcc d:\optbench.c /d1 /oilt /s /2 /7 ¦
+---------------------------------------------------+
¦ Выполняемый код для тестов оптимизации и ¦
¦ исполнения, которые использованы в этой статье, ¦
¦ генерировался с помощью этих командных строк с ¦
¦ указанными директивами компиляторов. ¦
L----------------------------------------------------
Результаты теста исполнения для каждого компилятора в малой и большой моделях памяти приводятся в таблице 1. Тесты в наборе теста исполнения организованы в функции, которые вызывались из главной управляющей процедуры. Весь набор был скомпилирован и отредактирован в один файл EXE. Некоторые из процедур теста выполняются так быстро, что единственный вызов функции невозможно точно измерить. В этих случаях функции вызываются из управляющей процедуры многократно, чтобы увеличить время выполнения для получения возможности количественных измерений. В таблице 1 приводится количество итераций для каждого теста.
--------------------------------------------------------------¬
¦Таблица 1: Результаты оптимизированного теста выполнения ¦
+-------------------------------------------------------------+
¦ COMPUTER ¦
¦ BORLAND INNOVATIONS DATALIGHT ¦
+----------------------T------------T------------T------------+
¦КОМПИЛЯТОР ¦ Turbo C ¦ C86Plus ¦ Optimum-C ¦
+----------------------+------------+------------+------------+
¦ВЕРСИЯ ¦ 1.5 ¦ 1.10 ¦ 3.14 ¦
+----------------------+------------+------------+------------+
¦ЦЕНА ¦ $99.95 ¦ $497 ¦ $139 ¦
+----------------------+------------+------------+------------+
¦РАЗМЕР ПРГРАММЫ(KB) ¦ 35/40 ¦ 30/38 ¦ 33/40 ¦
+----------------------+------------+------------+------------+
¦ОБЩИЕ ОПЕРАЦИИ (*) ¦ ¦ ¦ ¦
¦Вызовы функций ¦ 6.0/7.2 ¦ 7.6/8.2 ¦ 6.0/7.6 ¦
¦Целочисл. арифметика ¦ 7.0/7.0 ¦ 8.5/8.5 ¦ 6.3/6.3 ¦
¦Арифм-ка длинных целых¦ 29.0/29.0 ¦ 23.4/23.9 ¦ 26.3/26.9 ¦
¦Индексация ¦ 7.9/9.9 ¦ 7.9/11.4 ¦ 5.9/7.9 ¦
¦Использ-е указателей ¦ 6.2/15.3 ¦ 12.9/19.2 ¦ 6.8/15.3 ¦
¦ С регистровыми ¦ ¦ ¦ ¦
¦ переменными ¦ 6.8/15.2 ¦ 10.3/19.8 ¦ 6.8/15.3 ¦
¦Решето (Sieve) ¦ 5.0/5.0 ¦ 5.8/5.8 ¦ 4.3/3.8 ¦
¦ С регистровыми ¦ ¦ ¦ ¦
¦ переменными ¦ 6.4/6.5 ¦ 4.6/4.6 ¦ 4.3/3.8 ¦
+----------------------+------------+------------+------------+
¦ОПЕРАЦИИ С ФАЙЛАМИ ¦ ¦ ¦ ¦
¦Чтение и запись (**) ¦ ¦ ¦ ¦
¦ С дискеты на дискету¦ 8.2/8.2 ¦ 8.3/8.3 ¦ 8.3/8.2 ¦
¦ С жесткого диска ¦ ¦ ¦ ¦
¦ на жесткий диск ¦ 3.9/3.4 ¦ 3.9/3.9 ¦ 3.9/3.3 ¦
¦Getc и putc (***) ¦ ¦ ¦ ¦
¦ С дискеты на дискету¦ 49.8/50.6 ¦ 45.6/50.1 ¦ !13.5!/49.4¦
¦ С жесткого диска ¦ ¦ ¦ ¦
¦ на жесткий диск ¦ 17.6/18.4 ¦ 18.9/21.1 ¦ !5.5!/17.3 ¦
+----------------------+------------+------------+------------+
¦ОПЕРАЦИИ 80x87 ¦ ¦ ¦ ¦
¦Сложение/умножение (*)¦ 3.1/3.1 ¦ 2.8/2.8 ¦ 3.1/3.1 ¦
¦Нат. логарифм (****) ¦ 1.0/1.0 ¦ 1.3/1.3 ¦ 1.3/1.2 ¦
¦Синус/тангенс(****) ¦ 1.1/1.1 ¦ 1.5/1.5 ¦ 1.2/1.3 ¦
+----------------------+------------+------------+------------+
¦ Время измерялось в секундах и приводится для ¦
¦ малой/большой моделей памяти. ¦
¦ Тесты выполнялись на IBM PC/AT с тактовой частотой 6 ¦
¦ мегагерц, с сопроцессором 80287, с параметрами в ¦
¦ CONFIG.SYS FILES = 20 и BUFFERS = 20. ¦
¦ Значения, входящие в 10%-ю окрестность лучшего ¦
¦ результата, заключены в восклицательные знаки. ¦
¦ * - 20 итераций, ** - 1 итерация, *** - 2 итерации, ¦
¦ **** - 10 итераций. ¦
L--------------------------------------------------------------
--------------------------------------------------------------¬
¦Таблица 1: Продолжение ¦
+-------------------------------------------------------------+
¦ ¦