LINUX.ORG.RU
ФорумTalks

MSVC vs. ICC vs. GCC - почему первый всех делает?


0

2

p7zip native, gcc 4.5.1 -march=native -O3

[user@localhost ~]$ 7z b

7-Zip 9.13 beta  Copyright (c) 1999-2010 Igor Pavlov  2010-04-15
p7zip Version 9.13 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

RAM size:    3659 MB,  # CPU hardware threads:   4
RAM usage:    850 MB,  # Benchmark threads:      4

Dict        Compressing          |        Decompressing
      Speed Usage    R/U Rating  |    Speed Usage    R/U Rating
       KB/s     %   MIPS   MIPS  |     KB/s     %   MIPS   MIPS

22:    6295   331   1852   6123  |    75520   392   1737   6813
23:    6382   346   1881   6503  |    74658   392   1743   6832
24:    6321   358   1899   6796  |    73610   390   1749   6829
25:    6082   360   1930   6944  |    72659   390   1753   6832
----------------------------------------------------------------
Avr:          348   1890   6592               391   1746   6827
Tot:          370   1818   6709

7z 9.15 under Wine 1.3.35:

[user@localhost ~]$ wine 7z.exe b

7-Zip 9.15 beta  Copyright (c) 1999-2010 Igor Pavlov  2010-06-20

RAM size:    2047 MB,  # CPU hardware threads:   4
RAM usage:    850 MB,  # Benchmark threads:      4

Dict        Compressing          |        Decompressing
      Speed Usage    R/U Rating  |    Speed Usage    R/U Rating
       KB/s     %   MIPS   MIPS  |     KB/s     %   MIPS   MIPS

22:    7032   295   2319   6841  |   106827   391   2465   9638
23:    7062   306   2349   7195  |   103812   385   2470   9500
24:    6976   321   2337   7501  |   104299   393   2465   9676
25:    6830   333   2345   7799  |   102760   393   2460   9663
----------------------------------------------------------------
Avr:          314   2337   7334               390   2465   9619
Tot:          352   2401   8477

7z 9.15 native under Windows XP SP3:

7-Zip 9.15 beta  Copyright (c) 1999-2010 Igor Pavlov  2010-06-20

RAM size:    2047 MB,  # CPU hardware threads:   4
RAM usage:    850 MB,  # Benchmark threads:      4

Dict        Compressing          |        Decompressing
      Speed Usage    R/U Rating  |    Speed Usage    R/U Rating
       KB/s     %   MIPS   MIPS  |     KB/s     %   MIPS   MIPS

22:    7395   318   2261   7194  |   109051   400   2460   9839
23:    7495   321   2382   7636  |   106873   399   2451   9780
24:    7414   326   2441   7971  |   105774   400   2453   9813
25:    7146   331   2468   8159  |   103761   396   2462   9757
----------------------------------------------------------------
Avr:          324   2388   7740               399   2456   9797
Tot:          361   2422   8769



Последнее исправление: tempuser002 (всего исправлений: 1)
Ответ на: комментарий от megabaks

впрочем, есть вариант с грязным читерством - использовать старый патч для ICC, там механика такая что оно меняет «родной» и «чужой» местами

т.е. «плохим» станет Интел, а «своим» АМД )

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

методика такая, взять приложение , известное тем что дает при сборке ICC хороший прирост в скорости... ну допустим bzip2

собрать с -xO

замерить производительность


пропатчить http://code.google.com/p/patch-authenticamd/

если пропатчилось - замерить производительность еще раз

сравнить )

// мне сейчас некогда

Sylvia ★★★★★
()

В свое время сравнивал VC7 и GCC4.3 - первый выполнял inline-подстановки на порядок лучше GCC, который declspec(naked) наверное до сих пор толком не поддерживает

frame ★★★
()
Ответ на: комментарий от yoghurt

> Ничего не знаю, мой foobar2000 собран icc и работает куда быстрее, чем этот ваш тормозной Ритмбокс!

Быстрее музыку играет, что ли? Так это у меня и «Ноктюрн-211» мог, у него переключатель такой был.

shimon ★★★★★
()

а знаешь... мне както пофигу... главное чтобы архиватор архив разворачивал... программа работает? работает... что ещё надо?

DemonZLa
()

А можно ли с помощью MSVC скомпилить ПО для Линукса?
Компилить например в вайне или виртуалке, но чтобы запускалось под линуксом, естественно =)
Я б кеды скомпилил может быть ))

firestarter ★★★☆
()

Вполне возможна такая ситуация. MSVC компилирует код только под две архитектуры на одной ОС. ICC, вероятно, ещё умеет Itanium, хотя не уверен. Ну и поддержка ОС лучше. GCC - самый универсальный компилятор.

Сравнивать их довольно странно.

CyberTribe ★★
()
Ответ на: комментарий от anon_666

при распаковке все равно узким местом будет запись на диск , если только не распаковывается пара файлов из архива, т.е. все остальное распаковывается без записи на диск.

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

НЕ согласен с вами, ибо xz на рамдиске у меня разжимает со скоростю меньшей, чем копируются файлы/каталоги на винте.
Вечером могу замерить точно.
Не у всех i7 о пяти ядрах.

anon_666
()
Ответ на: комментарий от anon_666

-rw-r--r-- 1 sylvia users 146M May 22 2009 OOo_3.1.0_LinuxIntel_install_ru_infra.tar.xz


$ xz -d < OOo_3.1.0_LinuxIntel_install_ru_infra.tar.xz | pipebench > /dev/null
Summary:
Piped 158.39 MB in 00h00m11.83s: 13.38 MB/second


$ uname -p
Intel(R) Atom(TM) CPU 330 @ 1.60GHz

это в 2 раза выше чем скорость записи на обычную флешку и близко к скорости записи на достаточно фрагментированную ФС


Core2 для сравнения
sshfs, некешировано
Piped 158.39 MB in 00h00m13.44s: 11.78 MB/second
кешировано
Piped 158.39 MB in 00h00m04.89s: 32.32 MB/second

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Между 7z 9.15 и 9.13 разницы никакой - скорость _одинаковая_ - замучили вы все уже :)

Поэтому оригинальный тест остаётся в силе и вопрос - почему 7z настолько быстрее p7zip.

tempuser002
() автор топика
Ответ на: комментарий от firestarter

А можно ли с помощью MSVC скомпилить ПО для Линукса?

Можно, только геморрно - через ассемблерный вывод MSVC, если он, конечно, позволяет его генерировать.

tempuser002
() автор топика
Ответ на: комментарий от annoynimous

> Или у меня дежавю, или эту тему (точняк с этими числами) мы уже обсуждали

Обсуждали 2 месяца назад и ни к чему не пришли.

Какашки летели и в тот и в этот раз, не смотря на то, что тест легко проверить и не смотря на то, что он воспроизводится даже ... в виртуальной XP, запущенной ... под Линуксом :D

tempuser002
() автор топика

WINE + 7zip
[code]
7-Zip 9.13 beta Copyright (c) 1999-2010 Igor Pavlov 2010-04-15

RAM size: 1899 MB, # CPU hardware threads: 1
RAM usage: 419 MB, # Benchmark threads: 1

Dict Compressing | Decompressing
Speed Usage R/U Rating | Speed Usage R/U Rating
KB/s % MIPS MIPS | KB/s % MIPS MIPS

22: 834 70 1162 811 | 14675 87 1516 1325
23: 1088 94 1181 1108 | 15238 93 1505 1395
24: 1047 95 1190 1126 | 14895 92 1499 1382
25: 1005 96 1196 1147 | 14853 94 1494 1397
----------------------------------------------------------------
Avr: 89 1182 1048 91 1503 1374
Tot: 90 1343 1211
[/code]


p7zip (ICC/Linux)
[code]
7-Zip (A) 9.13 beta Copyright (c) 1999-2010 Igor Pavlov 2010-04-15
p7zip Version 9.13 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,1 CPU)

RAM size: 1899 MB, # CPU hardware threads: 1
RAM usage: 419 MB, # Benchmark threads: 1

Dict Compressing | Decompressing
Speed Usage R/U Rating | Speed Usage R/U Rating
KB/s % MIPS MIPS | KB/s % MIPS MIPS

22: 1166 97 1172 1134 | 14891 97 1385 1344
23: 1130 97 1188 1152 | 14658 97 1377 1342
24: 1069 97 1183 1149 | 14299 97 1367 1326
25: 963 92 1192 1100 | 14092 97 1366 1325
----------------------------------------------------------------
Avr: 96 1184 1134 97 1374 1334
Tot: 96 1279 1234
[/code]

по компрессии лучше, декомпрессия чуть чуть хуже.
в целом , я не скажу что пример удачен для сравнения, скорее наоборот.

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

7-Zip (A) 9.13 beta Copyright (c) 1999-2010 Igor Pavlov 2010-04-15
p7zip Version 9.13 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,1 CPU)

RAM size: 1899 MB, # CPU hardware threads: 1
RAM usage: 419 MB, # Benchmark threads: 1

Dict Compressing | Decompressing
Speed Usage R/U Rating | Speed Usage R/U Rating
KB/s % MIPS MIPS | KB/s % MIPS MIPS

22: 1065 93 1117 1036 | 13470 94 1295 1216
23: 1026 93 1120 1045 | 13212 94 1293 1209
24: 984 94 1131 1058 | 13025 94 1291 1208
25: 891 90 1136 1017 | 12869 94 1286 1210
----------------------------------------------------------------
Avr: 92 1126 1039 94 1291 1211
Tot: 93 1209 1125

gcc 4.5.1 для сравнения

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

получилось вот что (с gzip)

GCC 3.4.6 -O2 -march=pentium4 (для сравнения)
gzip -9 Pardus-International-2009.2-Geronticus-eremita.iso

Piped 910.12 MB in 00h01m14.83s: 12.16 MB/second
real   1m14.837s
user   1m13.542s
sys   0m1.804s


ICC 11.1 -O2 -xO
Piped 910.12 MB in 00h00m53.34s: 17.06 MB/second

real   0m53.373s
user   0m52.646s
sys   0m1.553s


authenticAMD patched:
Piped 910.12 MB in 00h00m53.32s: 17.06 MB/second

real   0m53.323s
user   0m52.599s
sys   0m1.597s

результаты идентичны, соответственно заявлять о том, что Intel намеренно портит производительность для АМД тут нельзя

-xN (sse2):
результаты идентичны предыдущим, 17.06 Mb/s
AMD patched: также

ICC 10.1 -xN -O2:
Intel:
Piped 910.12 MB in 00h00m55.51s: 16.39 MB/second

real   0m55.518s
user   0m54.869s
sys   0m1.518s

AMD:
Fatal Error: This program was not built to run on the processor in your system.
The allowed processors are: Intel(R) Pentium(R) 4 and compatible Intel processors. Enables new optimizations in addition to Intel processor-specific optimizations.

Sylvia ★★★★★
()
Ответ на: комментарий от devl547

Не знаю - вы такой единственный :)

У всех есть разница, причём значительная - я проверял на нескольких машинах - с Intel Core i5 и AMD Athlon 64 X2 K8.

tempuser002
() автор топика
Ответ на: комментарий от Sylvia

ICC 10.1 -O2 -mia32
результаты для Intel и AMD были идентичны (13.8 Mb/s)

-O2 -mia32 -axT (аналогично -march=generic -mtune=core2)

Intel:
Piped 910.12 MB in 00h00m55.75s: 16.32 MB/second

real   0m55.755s
user   0m55.066s
sys   0m1.551s


AMD:
Piped 910.12 MB in 00h01m06.40s: 13.70 MB/second
real   1m6.402s
user   1m5.822s
sys   0m1.457s

т.е. -mtune по сути не работает для AMD )

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

ICC 11.1
с -axT (-mtune=core2) для Intel и AMD результаты были идентичны.

Sylvia ★★★★★
()
Ответ на: комментарий от tempuser002

С2D T5600 - то же самое
Celeron D 331 - то же самое
На руках сейчас кроме celeron 520 больше ничего нет, но и в нем аналогично должно быть.

devl547 ★★★★★
()
Ответ на: комментарий от megabaks

>для не-интел надо патчи лепить...хотя может уже в новых версиях убрали бяку - хз - у меня интел - мне пофиг, поэтому не слежу :)

для 11.1 проверка на вендора не снижает производительности
(тесты см выше)

Sylvia ★★★★★
()
Ответ на: комментарий от devl547

Странный у вас Линукс, странная у вас Windows. Что ещё сказать.

tempuser002
() автор топика

Да сколько же можно откапывать этот боян... Оригинальный 7zip пишут только под windows, а портируют под остальные системы его самым простым способом - все функции WinAPI, которые можно заменить «в лоб», заменяют на аналогичные из POSIX. А для более сложных - пишут обёртки над функциями POSIX или даже копируют их из wine-а. Отсюда и потери производительности.

Я уже молчу, что 7z.exe запускается из-под Wine, что никак его не убыстряет.

Возможно разработчики wine'а умеют писать обёртки лучше, чем портировщики 7zip'а =).

И да, код, сгенерированный MSVC++, тоже скорее всего работает быстрее. Почему? Потому что MCVC++ - это основной компилятор разработчиков 7zip, под ним тестируется, отлаживается и оптимизируется весь код. Тут даже никакого злого умысла со стороны разработчиков нет, код всегда неосознанно затачивается под инструмент.

Если бы разработчики 7zip писали под linux'ом и собирали gcc, то ситуация была бы обратной.

Deleted
()
Ответ на: комментарий от madcore

это то, что собралось по гентушному ебилду
CFLAGS -O2 -msse2 -march=pentium4 -mtune=core2 -mfpmath=sse -fomit-frame-pointer

хотя возможно что было подставлено и -O3 (векторизация)
впрочем SSE инструкций objdump -d не находит:

cpuid: 0    nop: 11984    call: 17589    count: 262560
i686:    748
mmx:    98

Sylvia ★★★★★
()
Ответ на: комментарий от Deleted

Во многом согласен, но 7zip по сути числодробилка - не должно быть такой ощутимой разницы. Разве что код параллелизации плохо работает. Скоро проверю :)

Интересно было бы собрать MSVC++ p7zip _для_ Линукса (через ассемблерный вывод -> gnu as). Хотя я уверен, что никто этим заморачиваться здесь не будет.

tempuser002
() автор топика
Ответ на: комментарий от tempuser002

Проверил в однопотоковом режиме:

7z b -mmt=1

7-Zip 9.13 beta  Copyright (c) 1999-2010 Igor Pavlov  2010-04-15
p7zip Version 9.13 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

RAM size:    3979 MB,  # CPU hardware threads:   4
RAM usage:    419 MB,  # Benchmark threads:      1

Dict        Compressing          |        Decompressing
      Speed Usage    R/U Rating  |    Speed Usage    R/U Rating
       KB/s     %   MIPS   MIPS  |     KB/s     %   MIPS   MIPS

22:    2568    99   2513   2498  |    26272   100   2382   2372
23:    2474   100   2526   2520  |    25975   100   2387   2378
24:    2389   100   2581   2569  |    25603   100   2377   2376
25:    2300   100   2634   2626  |    25259   100   2387   2375
----------------------------------------------------------------
Avr:          100   2563   2553               100   2383   2375
Tot:          100   2473   2464
wine 7z.exe b -mmt=1

7-Zip 9.15 beta  Copyright (c) 1999-2010 Igor Pavlov  2010-06-20

RAM size:    2047 MB,  # CPU hardware threads:   4
RAM usage:    419 MB,  # Benchmark threads:      1

Dict        Compressing          |        Decompressing
      Speed Usage    R/U Rating  |    Speed Usage    R/U Rating
       KB/s     %   MIPS   MIPS  |     KB/s     %   MIPS   MIPS

22:    3106    99   3042   3022  |    36453    99   3308   3291
23:    3000   100   3070   3056  |    35982   100   3302   3294
24:    2883   100   3108   3099  |    35265    99   3289   3272
25:    2758   100   3160   3149  |    34669   100   3273   3261
----------------------------------------------------------------
Avr:          100   3095   3082               100   3293   3279
Tot:          100   3194   3181

30% разницы. Самое смешное - результаты повторяемы, но ведь как с г*вном смешают - версии разные, программы разные, etc. А может у вас то до сё.

Смешно.

tempuser002
() автор топика
Ответ на: комментарий от Deleted

Читал месяц назад :)

Либо они хорошо код пишут, либо GCC стал очень неплохо компилировать в последнее время. Только вот результатов MSVC нет.

tempuser002
() автор топика
Ответ на: комментарий от Ilshat
7z b -mmt=1

7-Zip 9.13 beta  Copyright (c) 1999-2010 Igor Pavlov  2010-04-15
p7zip Version 9.13 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

RAM size:    3979 MB,  # CPU hardware threads:   4
RAM usage:    419 MB,  # Benchmark threads:      1

Dict        Compressing          |        Decompressing
      Speed Usage    R/U Rating  |    Speed Usage    R/U Rating
       KB/s     %   MIPS   MIPS  |     KB/s     %   MIPS   MIPS

22:    2859   100   2790   2781  |    29987   100   2717   2707
23:    2757   100   2822   2810  |    29488   100   2710   2700
24:    2659   100   2870   2859  |    29233   100   2715   2712
25:    2560   100   2933   2922  |    28669   100   2701   2696
----------------------------------------------------------------
Avr:          100   2854   2843               100   2711   2704
Tot:          100   2782   2773

Ваш быстрее :) Но всё равно до wine/7z не дотягивает.

rpm -qi p7zip
Name        : p7zip                        Relocations: (not relocatable)
Version     : 9.13                              Vendor: openSUSE
Release     : 1.4                           Build Date: Tue 12 Oct 2010 03:43:36 AM YEKST
Install Date: Sun 17 Oct 2010 11:06:57 PM YEKST      Build Host: build15
Group       : Productivity/Archiving/Compression   Source RPM: p7zip-9.13-1.4.src.rpm
Size        : 4213764                          License: LGPLv2.1+
Signature   : RSA/SHA256, Tue 12 Oct 2010 03:44:12 AM YEKST, Key ID b88b2fd43dbdc284
Packager    : http://bugs.opensuse.org
URL         : http://p7zip.sourceforge.net/
Summary     : 7-zip file compression program
Description :
p7zip is a quick port of 7z.exe and 7za.exe (command line version of
7zip, see www.7-zip.org) for Unix. 7-Zip is a file archiver with
highest compression ratio. Since 4.10, p7zip (like 7-zip) supports
little-endian and big-endian machines.



Authors:
--------
    Igor Pavlov <ipavlov@users.sourceforge.net>
    my space <myspace@users.sourceforge.net>
tempuser002
() автор топика
Ответ на: комментарий от Ilshat

Такую древность не предлагайте - сам уже нашёл - смотрите моё предыдущее сообщение.

Надо бы посмотреть с какими флагами и каким компилятором собираются пакеты в OpenSuse 11.3, даже интересно стало. Результат лучше моего.

tempuser002
() автор топика
Ответ на: комментарий от tempuser002

> Такую древность не предлагайте - сам уже нашёл - смотрите моё предыдущее сообщение.

Так у меня 11.1, действительно старовата уже.

Результат лучше моего.

Криво собрали раньше, чтд.

Ilshat
()
Ответ на: комментарий от Sylvia

В-я, 1) ну посмотри, пожалуйста, на changelog.

И, пожалуйста, сравни на своём компе официальный 7z 9.13 и 9.15 - если найдёшь хоть сколько-нибудь заметную разницу в производительности - пиши. :))))

tempuser002
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.