Генерация высококачественного кода для программ, написанных на СИ | страница 19



¦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--------------------------------------------------------------

При сравнении результатов в таблице 1 и в номере за февраль 1988 необходимо отметить одно изменение. Два теста с использованием регистровых переменных (использования указателей и "решето"-sieve) в феврале были измерены для 100 итераций, а не для 20-ти. Поскольку полезно непосредственное сравнение тестов с использованием регистровых переменных и без их использования, тесты с регистровыми переменными в данном случае запускались с 20-ю итерациями. Также заметьте, что численные тесты, присутствующие в таблице 1, выполнялись для прямого кода процессоров 80x87 в малой и большой моделях памяти, а не с помощью программного эмулятора.