netch80: (finch)
[personal profile] netch80
Удобно, когда пачка кросс-компиляторов доступна из коробки без мучений.

$ ls -ld qmodo*_s
-rwxrwxr-x 1 netch netch 344456 лис 24 21:19 qmodo_aa64_s
-rwxrwxr-x 1 netch netch 340376 лис 24 21:10 qmodo_amd64_s
-rwxrwxr-x 1 netch netch 531552 лис 24 21:25 qmodo_mips64_s
-rwxrwxr-x 1 netch netch 466088 лис 24 21:17 qmodo_ppc64_s
-rwxrwxr-x 1 netch netch 355752 лис 26 14:43 qmodo_rv_s
-rwxrwxr-x 1 netch netch 408640 лис 24 21:11 qmodo_s390x_s
-rwxrwxr-x 1 netch netch 336776 лис 24 21:35 qmodo_sparc64_s


Сборка, потом --strip-all. Везде gcc5 (Ubuntu 16.04) (Risc-V - gcc6), -O.
x86 таки почти всех победил (по размеру, а вы о чём подумали?)
Результат MIPS удивляет.

Date: 2016-11-25 10:21 am (UTC)
From: [identity profile] dadv.livejournal.com
x84 это CISC, а MIPS это RISC и многих команд там нет. Я вот на днях компилировал libucl.so, так там функция ucl_hash_replace() в бинарном виде для amd64 занимала 330 байт при компиляции gcc-4.2, а для MIPS-32 она же 25000 байт (sic!) из-за auto-inline, похоже. gcc-6.2 для MIPS-32 дал на том же коде 628 байта. Полный размер .so для MIPS, тем не менее, на 80% больше в сравнении с amd64.

Date: 2016-11-25 12:36 pm (UTC)
From: [identity profile] netch80.livejournal.com
> а MIPS это RISC и многих команд там нет.

Sparc - RISC. У него результаты лучше, чем у x86.
Aarch64 - тоже RISC (хоть и менее RISCʼовый, "смягчённый" во многом), результаты - на 1% хуже x86.
PPC - RISC - у него на 20% хуже x86, но на более чем 20 лучше, чем у MIPS.
Так что сама по себе RISCʼовость явно недостаточна.
"Многих команд нет" - это каких? У меня там код - просто прокси специализированного сетевого протокола, там нет ничего специфического, типа длинной арифметики, CLZ или тому подобного.

> а для MIPS-32 она же 25000 байт (sic!) из-за auto-inline, похоже. gcc-6.2 для MIPS-32 дал на том же коде 628 байта

Агрессивный inline явно не о том, а вот 628 против 330 - да, показательно.

> Полный размер .so для MIPS, тем не менее, на 80% больше в сравнении с amd64.

Угу, сходно с результатом 628/330.

Date: 2016-11-28 10:16 pm (UTC)
From: [identity profile] dimich-dmb.livejournal.com
В MIPS'е на размер кода могут сильно влиять нативные мипсовские опции. Там возможна адресация как относительно базового регистра, тогда операнды 16-битные и обращение к секциям данных и .bss обходится одной инструкцией, так и с абсолютными 32-битными адресами, тогда по три инструкции на каждое обращение.

Date: 2016-11-29 06:47 am (UTC)
From: [identity profile] netch80.livejournal.com
Я просмотрел глазами что было - не похоже, чтобы использовались эти самые длинные варианты.

Profile

netch80: (Default)
netch80

August 2017

S M T W T F S
  12345
67 89101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 20th, 2017 09:15 pm
Powered by Dreamwidth Studios