После выхода прошлого материала прошло совсем немного времени, но пока мы проводили это большое количество тестов, фирмы успели выпустить новые версии своих продуктов. И, конечно, встал вопрос о том, чем они отличаются по скорости генерируемого кода.
В этом дополнении будут приведены данные по производительности в SPEC CPU2000 компиляторов:
- Microsoft Visual C++ Compiler из состава Visual Studio .NET (версия 13.00.9466)
- Intel C/C++/Fortran Compiler 6.0 (подверсии 139/139/140)
Для сравнения используются версии Microsoft Visual C++ 6.0 SP5 и Intel Compilers 5.0.1. Опции оптимизации компиляторов полностью сохранились, напомню, что для Microsoft это -Ox -G6 а для Intel -Qipo -QxW -O3 (версия с SSE2 для Pentium 4). Полные конфигурационные файлы вы можете посмотреть здесь.
Тесты в этот раз проводились на системе:
- Intel Pentium 4 1.7GHz
- Epox 4T2A i850
- 256MB PC800 RDRAM
- Windows 2000 Pro SP2
Как мы помним, Microsoft Visual C++ версии 6 показал очень низкие результаты, так что посмотреть на качество нового компилятора безусловно интересно. Однако в версии 13.00.9466 не появилось поддержки SIMD инструкций, а также новых опций оптимизации (напомним, что тест SPEC CPU2000 использует исключительно компиляторы командной строки). Поэтому сильных изменений мы не ждем.
Резкий скачок в номере версии компиляторов от Intel тоже привлекает внимание. Отметим, что наиболее важным новшеством в них стала поддержка OpenMP технологии, а также возможности автоматической оптимизации для SMP архитектур. Видимо, готовится почва для введения Hyper-Threading на настольные ПК :).
Начнем с тестов CINT2000.
Как мы видим по результатам тестов, компании Microsoft удалось значительно повысить качество генерируемого кода. Прирост производительности в подтестах CINT2000 составляет 25–160%. При этом максимальный эффект виден в тесте 252.eon, который, как вы помните, сильно зависит от скорости центрального процессора. Интегральная оценка получила прибавку в 60%. Но одного из своих конкурентов — компилятор от Intel — он пока не догнал :)
С компиляторами Intel менее очевидная ситуация. В семи подтестах есть рост, а в остальных пяти мы видим небольшое снижение показателей. В то время как интегральная оценка осталась практически на месте — рост составил всего 1,26%. Так что констатируем, что сильно хуже не стало :)
В подтестах набора CFP2000 ситуация аналогичная. Microsoft стал значительно быстрее (на 7–96%). Новый компилятор Intel в двух тестах немного впереди, а в двух других есть снижение.
Снова некоторая нестабильность — 4 подтеста в минусе, 10 в плюсе. Отметим рост более 16% в спорном подтесте 178.galgel, где, как вы помните, Compaq Visual Fortran 6.6 обгонял Intel. Интегральная оценка прибавила 2,9%.
Выводы
Последняя версия компилятора C/C++ компании Microsoft значительно опередила своего предшественника, компилятор шестой версии. Пожалуй, ему уже пора на покой :). Приведенные данные немного скрашивают грустные тона первой статьи. Будем надеяться, что и пользователям других продуктов Microsoft с этого тоже что-то перепадет :)
С другой стороны, Intel, также прибавивший единицу к старшему номеру версии, показывает менее значительные изменения. В общем, это можно объяснить тем, что ориентация на OpenMP и Hyper-Threading привела к существенному изменению в компиляторах. Так что еще хорошо, что обладателям обычных процессоров сильно хуже от этого не стало :)
Видимо, новые тесты систем в программе SPEC CPU2000 мы будем проводить уже с новым компилятором от Intel.