Буквально месяц назад компания Intel представила новые версии своих компиляторов и многих интересует вопрос их относительной производительности. Кроме того мы уже давно собирались перейти с использования устаревшего (конечно скорее морально) компилятора MSVC 6 на новый Visual.NET.
Да и сам тест SPEC CPU2000 (правда еще в конце 2001 года :) сменил номер версии с 1.1 на 1.2. Так что в этом материале мы рассмотрим все эти новшества и заодно подготовимся к работе в 2003 году.
Итак, вспомним, что у нас есть:
- серия iXBT.060202.*: MSVC 6 SP5 и компиляторы Intel версии 5.
- серия iXBT.060602.*: MSVC 6 SP5 и компиляторы Intel версии 6.
В каждой серии есть варианты по наборам SIMD: без них, с MMX, с SSE и с SSE2. Каждый процессор обычно тестируется на максимальном для него наборе SIMD. В частности в этой статье все тесты использовали SSE2.
Сегодня мы добавляем к компиляторам Intel Compiler 7.0 (как для C/C++ так и для Fortran). Кроме того вместе с MSVC 6 SP5 попробуем использовать для библиотек (собственно компилятор MSVC не используется) новую версию студии Microsoft Visual.NET.
Итого по компиляторам у нас получается 6 комбинаций. Все они были протестированы на ПК следующей конфигурации:
- процессор Intel Pentium 4 2.53 ГГц (FSB 533, L2 512K)
- материнская плата ASUS P4T533 (i850E)
- модуль памяти Samsung RDRAM PC4200 512МБ
Выбор остальных компонент для тестов SPEC CPU2000 не важен. Об этом Вы можете узнать здесь.
Система работала под управлением Windows 2000 Pro SP3. Сначала все конфигурации были скомпилированы (с парой переустановок ОС). После этого система еще раз была установлена заново и запускались тесты (напомню, что SPEC CPU2000 не использует никаких системных файлов, так что между отдельными тестами переустанавливать ОС не обязательно).
В целом мы видим некоторый рост результатов при изменении версий в большую сторону, но он все-таки незначителен:
Прирост при переходе с MSVC6 SP5 на MS Visial.NET,% | ||
CINT2000 | CFP2000 | |
ic5 | 0,73 | 0,10 |
ic6 | 0,84 | 0,60 |
ic7 | 0,52 | 0,00 |
Относительная производительность компиляторов Intel,% | ||
CINT2000 | msvc6 | ms.net |
ic5 | 100,00 | 100,00 |
ic6 | 99,90 | 100,00 |
ic7 | 100,42 | 100,21 |
CFP2000 | msvc6 | ms.net |
ic5 | 100,00 | 100,00 |
ic6 | 102,13 | 102,63 |
ic7 | 103,95 | 103,85 |
Отметим, что мы привели интегральные показатели. Если посмотреть на результаты отдельных тестов, то можно увидеть и большую разницу. В частности переход на Visual.NET дает в двух подтестах CINT2000 рост порядка 5%, а в CFP2000/183.equake рост составляет более 13%. В то же время для CFP2000/188.ammp наоборот наблюдается снижение результата почти на 7%.
Что касается изменения версии самого теста с 1.1 на 1.2, то это выражается в поддержке нескольких новых операционных систем и поправках в исходных текстах тестов для улучшения совместимости с различными компиляторами. Когда мы работали над этой статьей, у нас были некоторые проблемы с компиляцией тестов под Linux, которые разрешились после изучения новых версии тестов. Таким образом это сравнение носит формальный характер (конфигурация iXBT.060602.sse2.cfg).
SPEC CPU2000 | 1.1 | 1.2 |
164.gzip | 928 | 926 |
175.vpr | 615 | 614 |
176.gcc | 1159 | 1157 |
181.mcf | 763 | 763 |
186.crafty | 1006 | 1004 |
197.parser | 922 | 925 |
252.eon | 1097 | 1096 |
253.perlbmk | 1163 | 1176 |
254.gap | 1236 | 1232 |
255.vortex | 1548 | 1548 |
256.bzip2 | 780 | 779 |
300.twolf | 684 | 680 |
SPECint_base2000 | 960 | 959 |
SPEC CPU2000 | 1.1 | 1.2 |
168.wupwise | 1276 | 1278 |
171.swim | 1812 | 1811 |
172.mgrid | 964 | 964 |
173.applu | 1078 | 1078 |
177.mesa | 989 | 985 |
178.galgel | 1477 | 1477 |
179.art | 742 | 742 |
183.equake | 1099 | 1099 |
187.facerec | 1232 | 1230 |
188.ammp | 668 | 668 |
189.lucas | 1407 | 1407 |
191.fma3d | 976 | 976 |
200.sixtrack | 470 | 469 |
301.apsi | 758 | 758 |
SPECfp_base2000 | 1010 | 1010 |
Заключение
Итак, можно сказать, что мы получили два интересных результата.
Во первых новые компиляторы дают небольшой рост интегральных оценок. Так что если вам важен каждый процент (или даже полпроцента :) производительности, то безусловно стоит попробовать седьмую версию компиляторов от Intel в паре со средой Microsoft Visual.NET. Отметим, что на одном конкретном приложении рост может составлять 5 и более процентов. Примеры есть :)
С другой стороны разница настолько мала, что мы вполне можем использовать в будущем только новые компиляторы и сравнивать результаты с данными, полученными в прошлом году на старых конфигурациях. То же самое относится и к версии теста SPEC CPU2000.