LLVM 3.5

 ( trey | 2014. szeptember 5., péntek - 9:41 )

Az Apple részéről Chris Lattner tegnap bejelentette a Low Level Virtual Machine (LLVM) névre hallgató fordítóprogram infrastruktúra 3.5-ös verzióját. Részletek a kiadási megjegyzések dokumentumban.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Tegnap meregettem egy kicsit a 3.5.0-ot egy apro projecten egy 4x2.6GHz+HT i7-en ami 16 binarist general:

$ find src/ -type f -name '*[ch]' | wc -l
     356
$ find src/ -type f -name '*[ch]' -exec cat \{\} \; | wc -l
  133926
$ du -sh lib/Darwin/
292M	lib/Darwin/

Clang+LLVM 3.4.0:

$ time make -j
…
real	0m17.963s
user	0m46.595s
sys	0m9.182s

Clang+LLVM 3.5.0:

$ time make -j
…
real	0m18.573s
user	0m49.370s
sys	0m9.554s

Lassul. :/

---
pontscho / fresh!mindworkz

És a generált kód legalább kisebb, gyorsabb, ilyesmi?


"Belépés díjtalan, kilépés bizonytalan."
"Vajon mit várok a sorstól, ha hányok az édestől, és izzadok a sóstól."

"Lassul. :/"
Inkább dolgozzon kicsivel lassabban ha cserébe a kész kód gyorsabban fut (esetleg kisebb) mint eddig. (Netán még az eddig esetleg meglévő hibák is megszűnnek.)

Biztos, hogy :-/ és nem ;-) ? Ennyi lassulást szerintem be lehet vállalni (szerintem kb mérési hiba szintjén mozog), feltéve, ha szepp, job, zöldebb az eredmény - amit persze nem tudunk. De az erre vonatkozó eredményeid szintén érdekelnének.

Valoban nem szignifikan ez a lassulas, foleg mert megint "szebbek" lettek a hibauzenetek, nemi ironia akart csak lenni. :)

---
pontscho / fresh!mindworkz

Kivancsiva tettel, igy en is csinaltam egy gyors osszahasonlitast, de egy szabadon elerheto projekttel (protobuf-2.6.0), hatha valaki meg akarja ismetelni. Minden tesztnel ugyanaz a szcenario futott le: tar, configure, time make -j. Az eredmenyek alapjan valoban megfigyelheto egy kis lassulas, de persze ez nem egy korrekt teszt, pusztan megismeteltem egy masik projekttel es kicsivel tobb mintaval azt, amit te csinaltal ;)

clang-3.4
real 63.73 user 114.66 sys 4.46
real 64.14 user 115.08 sys 4.30
real 64.03 user 115.03 sys 4.38
real 64.29 user 115.29 sys 4.51
real 64.47 user 115.50 sys 4.58
real 64.42 user 115.25 sys 4.65
real 64.56 user 115.58 sys 4.43
real 63.86 user 115.08 sys 4.43

clang-3.5
real 65.46 user 117.78 sys 4.57
real 65.91 user 118.08 sys 4.38
real 65.57 user 117.86 sys 4.58
real 65.59 user 117.57 sys 4.59
real 65.26 user 116.91 sys 4.75
real 65.57 user 117.39 sys 4.70
real 65.07 user 116.64 sys 4.59
real 64.99 user 116.62 sys 4.70

gcc-4.8.2
real 85.79 user 155.58 sys 7.18
real 86.48 user 156.04 sys 7.58
real 85.94 user 155.13 sys 7.54
real 86.01 user 155.51 sys 7.38
real 85.55 user 154.34 sys 7.77
real 85.49 user 154.74 sys 7.10
real 85.10 user 154.18 sys 7.26
real 85.46 user 154.73 sys 7.06

Es peldakent, hogy nem mindig a "make -j" a nyero megoldas ;)

clang-3.4: make -j3 (nproc+1)
real 59.72 user 109.39 sys 4.00
real 59.32 user 108.97 sys 4.04
...

clang-3.5: make -j3
real 60.51 user 110.94 sys 4.34
real 60.64 user 111.01 sys 4.29
...

gcc-4.8.2: make -j3
real 80.79 user 145.42 sys 7.62
real 80.31 user 145.66 sys 6.52
...

Koszi, ez valoban egesz pofas. Az a ~1-2% elhanyagolhato.

---
pontscho / fresh!mindworkz

np. A kulonbseg valoban elhanyagolhato, de azert kivancsisagbol lefuttattam a tesztet egy valamivel nagyobb projekttel is: llvm-3.5.0, hogy stilusosak legyunk ;)

clang-3.4
real 1105.57 user 2105.72 sys 72.41
real 1104.43 user 2106.77 sys 71.62
real 1106.66 user 2109.25 sys 71.94
real 1105.91 user 2106.86 sys 71.91
real 1105.75 user 2105.93 sys 71.73
real 1105.74 user 2106.84 sys 72.95
real 1104.18 user 2104.57 sys 71.27
real 1103.75 user 2104.72 sys 71.99

clang-3.5
real 1117.69 user 2128.42 sys 73.37
real 1117.06 user 2126.99 sys 73.20
real 1116.12 user 2127.00 sys 73.91
real 1117.11 user 2128.00 sys 73.87
real 1116.81 user 2128.94 sys 72.35
real 1117.25 user 2126.66 sys 73.99
real 1116.66 user 2127.44 sys 72.91
real 1117.52 user 2128.09 sys 73.24

folyt. nem kov. ;)