LINUX.ORG.RU
ФорумTalks

GCC G++ Compiler sucks


0

1

7z under wine (MS Visual C)

[birdie@localhost 7-Zip]$ ./7z.exe b

7-Zip 4.55 beta  Copyright (c) 1999-2007 Igor Pavlov  2007-09-05

RAM size:    2027 MB,  # CPU hardware threads:   2
RAM usage:    425 MB,  # Benchmark threads:      2

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

22:    1881   148   1237   1830  |    40376   198   2102   4159
23:    2597   152   1737   2646  |    40012   198   2105   4177
24:    2521   151   1800   2710  |    39710   199   2111   4200
25:    2416   150   1843   2758  |    39351   200   2112   4216
----------------------------------------------------------------
Avr:          150   1655   2486               199   2107   4188
Tot:          174   1881   3337
________________________________________________________________
7z GCC 4.2.1: -march=k8 -O3 (лучший результат среди всех флагов):

[birdie@localhost 7-Zip]$ 7z b

7-Zip 4.55 beta  Copyright (c) 1999-2007 Igor Pavlov  2007-09-05
p7zip Version 4.55 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)

RAM size:    2027 MB,  # CPU hardware threads:   2
RAM usage:    425 MB,  # Benchmark threads:      2

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

22:    2055   155   1292   1999  |    35258   199   1823   3631
23:    2218   153   1478   2260  |    34739   199   1821   3627
24:    1903   138   1487   2046  |    34244   200   1814   3621
25:    1925   141   1560   2198  |    33761   199   1813   3617
----------------------------------------------------------------
Avr:          147   1454   2126               199   1817   3624
Tot:          173   1636   2875
________________________________________________________________

Вердикт: под Wine'ом 7z работает быстрее до 10% :-(
★★★★★


попробуй cflags "-march=k8 -O3 -fno-exceptions"
и еще просто заради интереса CFLAGS="-march=k8 -O1 --fast-math
-fno-guess-branch-probability -fno-exceptions -finline-functions
-finline-limit=500 -fcrossjumping -fno-align-jumps -frename-registers
-funswitch-loops -foptimize-sibling-calls -fno-delayed-branch -fno-if-conversion"

Chubaka
()

Да ладно тебе birdie ныть. Учитывая просто офигенную многоплатформенность кода от студии (я имею ввиду что программы работают на всех x86 платформах под управлением любой ОС семейства виндовс) результат не выглядит таким уж плохим. Я бы даже сказал выглядит вполне достойно. И флажки вон чел подсказал, ffast-math обычно неплохо помогает, и он вроде в O3 не входит, ибо опасный.

AndreyKl ★★★★★
()

Intel C++ 10 рулит (-O2 -ipo1000 -no-prec-div -xO -funroll-loops):

[root@localhost bin]# ./7za b

7-Zip (A) 4.55 beta  Copyright (c) 1999-2007 Igor Pavlov  2007-09-05
p7zip Version 4.55 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)

RAM size:    2027 MB,  # CPU hardware threads:   2
RAM usage:    425 MB,  # Benchmark threads:      2

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

22:    2435   148   1605   2368  |    38311   199   1982   3946
23:    2384   143   1702   2429  |    37898   199   1989   3956
24:    2539   153   1784   2730  |    37543   199   1990   3970
25:    2530   157   1845   2889  |    37130   199   1996   3978
----------------------------------------------------------------
Avr:          150   1734   2604               199   1989   3963
Tot:          175   1862   3283

birdie ★★★★★
() автор топика

сдаётся мни, чта писали сей 7z с оглядкой на винды. потому и не кусают.

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


birdie, если еще не забил:
-ffast-math -fno-guess-branch-probability
-fno-if-conversion
-fno-delayed-branch -fno-loop-optimize -fcrossjumping
-foptimize-sibling-calls -fgcse -fexpensive-optimizations
-fstrength-reduce -frerun-loop-opt -fpeephole2 -fschedule-insns
-fschedule-insns2 -fstrict-aliasing -freorder-functions
-fsched-interblock -fno-align-jumps -fno-align-labels
-fno-align-functions -finline-functions -frename-registers
-funswitch-loops -fno-math-errno -funsafe-math-optimizations
-fno-trapping-math -finline-limit=500

Chubaka
()

>Вердикт: под Wine'ом 7z работает быстрее до 10%

Ну и что ? tar -jcf тебе поможет. И как бетой можно что то тестить ???

robot12 ★★★★★
()

Всем любителям посравнивать компиляторы, может оказаться интересной эта ссылка: http://www.apfloat.org/apfloat/2.41/

Я сейчас немного экспериментирую и могу сказать, что оптимизация под конкретный процессор, сделанная вручную очень рулит.

Пример: вычисление предлагаемой программой (aptest) 1048576 цифр числа "пи" без ассемблерных вставок, чисто на Си для 64-битной платформы даёт на g++ 42.230 сек (на моём компьютере), с ассемблером (только для критичных участков) - 6.280 сек. Что называется, почувствуйте разницу.

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

Это плата за "универсальность и кросплатформенность", я всегда говорил, что это плохо для пользователей, и со временем становится только хуже

frame ★★★
()

7zip и p7zip - это всё-таки не одно и то же. 7zip написан под оффтопик и принципиально непортабелен, а p7zip - это неофициальный порт.

Вот если компилировать _абсолютно_ одно и то же, тогда ещё можно что-то сравнивать.

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

Не вижу проблем с кросплатформенностью. Между прочим, не настаиваю, но кажется Microsoft'овский компилятор C++ компилирует не только для x86 или x86-64. Если не в публичной версии, то во внутрифирменной.

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

eVC компилирует в x86, ARM, MIPS.

Не знаю, правда, насколько эти компиляторы сильно связаны с "основным" MSVC.

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

Я тоже не знаю, но вряд ли был разработан совершенно новый код компилятора. Правда M$ могла и просто, как они обычно делают, купить стороннюю разработку.

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

> Я предполагаю, что он поддерживает как минимум PowerPC (Xbox) и Itanium 64.

Ещё MIPS и Alpha. Поддерживал, во всяком случае.

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

> Всем любителям посравнивать компиляторы, может оказаться интересной эта ссылка: http://www.apfloat.org/apfloat/2.41/

Я ведь сравниваю один и тот же код, скомпилированный разными компиляторами ... причём тут оптимизация на ассемблере?

birdie ★★★★★
() автор топика

Кстати, народ, ведь вы сами можете проверить этот (слегка неутешительный) результат - к чему воздух сотрясать?

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

> Я ведь сравниваю один и тот же код, скомпилированный разными компиляторами ... причём тут оптимизация на ассемблере?

К тому, что иногда она даёт для критических участков потрясающий результат. А по ссылке там, кстати, не только ассемблер, а полный набор вариантов для разных компиляторов и платформ (x86 и x86-64)

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

> А по ссылке там, кстати, не только ассемблер, а полный набор вариантов для разных компиляторов и платформ (x86 и x86-64)

Разный код сжатия для разных компиляторов? Смеётесь!

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

>К тому, что иногда она даёт для критических участков потрясающий результат.

и что, автору 7z было лень включить уже написанные ассемблерные вставки (или переписать если синтаксис ассемблеров отличается) под тот же x86 только для линукса ? звучит не реалистично.

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