Страница 10 из 17
Результаты теста исполнения для каждого компилятора в малой и большой моделях памяти приводятся в таблице 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: Продолжение ¦ +-------------------------------------------------------------+ ¦ ¦ ¦ LATTICE MANX METAWARE MICROSOFT WATCOM ¦ +---------T---------T---------T---------T---------T-----------+ ¦MS-DOS C ¦Aztec C ¦High C ¦ C ¦QuickC ¦WATCOM C ¦ +---------+---------+---------+---------+---------+-----------+ ¦3.2 ¦4.0 ¦1.4 ¦5.0 ¦1.0 ¦6.0 ¦ +---------+---------+---------+---------+---------+-----------+ ¦$500 ¦$499 ¦$595 ¦$450 ¦$99 ¦$295 ¦ +---------+---------+---------+---------+---------+-----------+ ¦34/41 ¦20/24 ¦33/44 ¦28/39 ¦31/44 ¦25/30 ¦ +---------+---------+---------+---------+---------+-----------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦7.5/8.1 ¦7.9/8.6 ¦6.9/9.5 ¦6.1/6.0 ¦6.5/7.5 ¦!3.8/4.5! ¦ ¦7.7/7.7 ¦9.1/9.2 ¦5.8/5.8 ¦5.3/5.2 ¦6.8/6.8 ¦!3.7/3.8! ¦ ¦23.3/24.3¦23.9/24.2¦27.8/29.1¦23.9/24.8¦27.8/28.7¦!20.0/21.0!¦ ¦11.0/34.9¦9.0/10.5 ¦7.1/7.8 ¦!4.8!/7.2¦7.9/11.3 ¦5.4/!5.5 ¦ ¦12.3/58.5¦12.8/15.3¦5.4/15.3 ¦!5.1!/9.8¦7.8/17.8 ¦6.1/!6.2! ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦12.8/58.6¦7.8/15.3 ¦!5.2!/15.3!5.1!/9.8¦7.7/17.8 ¦5.6/!6.2! ¦ ¦7.1/6.9 ¦7.6/7.6 ¦5.4/5.6 ¦4.2/4.3 ¦5.3/5.4 ¦!3.2/3.4! ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦6.9/7.0 ¦5.9/6.1 ¦5.8/6.0 ¦4.2/4.3 ¦6.5/6.5 ¦!3.2/3.4! ¦ +---------+---------+---------+---------+---------+-----------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦8.2/8.2 ¦8.3/8.2 ¦8.0/8.0 ¦8.3/8.2 ¦8.2/8.3 ¦8.2/8.2 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦3.9/3.7 ¦3.9/2.8 ¦!1.0/0.9!¦3.3/3.8 ¦3.9/3.4 ¦3.4/3.4 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦51.3/51.5¦28.6!27.7!39.8/39.8¦40.0/40.0¦40.0/40.0¦51.2/51.3 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦21.0/26.0¦12.5!11.0!16.0/15.2¦14.8/15.7¦16.1/16.0¦19.2/20.1 ¦ +---------+---------+---------+---------+---------+-----------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦4.7/4.7 ¦2.6/2.6 ¦2.6/2.1 ¦!1.7/1.7!¦3.1/3.0 ¦1.8/1.8 ¦ ¦1.3/1.3 ¦1.1/1.1 ¦1.1/1.2 ¦1.0/1.0 ¦1.2/1.3 ¦!0.9/0.9! ¦ ¦1.9/1.9 ¦1.3/1.3 ¦1.1/1.2 ¦1.1/1.1 ¦1.3/1.4 ¦!1.0/1.0! ¦ +---------+---------+---------+---------+---------+-----------+ ¦ Компиляторам задавались ключи для оптимизации по ¦ ¦ скорости, использования непосредственных инструкций ¦ ¦ процессоров 80286 и 80287. Все тесты, интенсивно ¦ ¦ использующие процессор, были выиграны компиляторами ¦ ¦ WATCOM и Microsoft. Не нашлось компилятора, код которого ¦ ¦ для тестов ввода/вывода выполнялся бы во время, близкое к ¦ ¦ лучшему, в малой и в большой моделях памяти одновременно. ¦ L-------------------------------------------------------------- |