Zajimalo mne kolik vykonu prinesou 64bit aplikace a take o kolik mene bude zpomalovat provadeni 64bit operaci v 64bit rezimu nez v 32bit rezimu. Vytvoril jsem si proto jednoduchy benchmark abych postihl nektere typicke situace.
Mate li chut vyzkouset si to u sebe, sosejte:
Win 32bit
Linux 32bit
Linux 64bit
Win 64bit bude k dispozici brzy. Linuxi binarky jsou baculate protoze jsou staticky linkovane zato by mely byt vsude spustitelne (pro spusteni 64bit verze pochopitelne potrebujete 64bit OS). Zdrojaky dam az je "odprasim" Prekladano s "-O2 -funroll-all-loops" (po nekolka experimentech asi nejlepsi). Win verze: arch. >=PPro a optimalizace na rychlost.
Programek provadi trideni pole (porovnavani, swapovani prvku), nasobeni celociselnych matic a pseudo-scitani (stejne jako nasobeni akorat v nejvnorenejsim cyklu je scitani; z matematickeho hlediska nesmysl ale hezky algoritmus na mereni ). To vse nad 32bit a 64bit operandy. Working set je nastaven tak, aby se vesel do cache a propustnost pameti aby vysledek neovlivnila.
Ted moje vysledky:
Linux 32bit:
Kód:
Zmereno: Trideni (int) Vykon: 911.01 Kops/s
Zmereno: Trideni (int64) Vykon: 646.47 Kops/s
Zmereno: Scitani (int) Vykon: 2197.42 Kops/s
Zmereno: Scitani (int64) Vykon: 1406.59 Kops/s
Zmereno: Nasobeni (int) Vykon: 1924.81 Kops/s
Zmereno: Nasobeni (int64) Vykon: 245.80 Kops/s
Linux 64bit:
Kód:
Zmereno: Trideni (int) Vykon: 872.36 Kops/s
Zmereno: Trideni (int64) Vykon: 853.89 Kops/s
Zmereno: Scitani (int) Vykon: 2160.34 Kops/s
Zmereno: Scitani (int64) Vykon: 2107.00 Kops/s
Zmereno: Nasobeni (int) Vykon: 1976.83 Kops/s
Zmereno: Nasobeni (int64) Vykon: 1771.63 Kops/s
Dusledky:
1) pokles vykonu pri provadeni operaci nad 64bit operandy je na 32bit architekture znacny, hlavne u nasobeni. Na 64bit tam rozdil porad je ale mnohem mensi.
2) Lidi od gcc maji jeste na cem pracovat protoze 32bit verze programu pracujici s 32bit intem jsou vykonnejsi nez 64bit rogramy pracujici s 32bit int coz je ostuda protoze v 64bit rezimu je k dispozici vice registru atd. ktere by mely prinest vyhodu.
3) Programy, ktere se pouze prelozi pro 64bit rezim (a neudelaji se optimalizace primo v kodu, coz velmi casto ani nejde) asi prilis vykonu navic nepoberou. Operace nad 64bit operandy v 95% programu neni treba.
Vysledky z win dodam az prebootuju.
Na zaver upozorneni- vysledky nelze primo porovnavat mezi win a linux verzemi protoze se vam do toho zanese rozdil v kvalite prekladacu (gcc je oproti MS prekladaci C z VS.NET docela pozadu). Je to SYNTETICKY benchmark se vsemi neduhami tohoto typu benchmarku, je treba na to pamatovat.
Disclaimer: software is provided AS IS, za usmazene procesory atd. nerucim