pbench - platform benchmark

Fórumok

Felmerult bennem az igeny, hogy megnezzem, mennyire gyors/lassu a windows vista egy xp-hez vagy egy ubuntuhoz kepest. mivel nem talaltam a neten megfelelo programot, irtam egyet.
Arra voltam kivancsi, hogy a tipikus windowsra/linuxra fejlesztett program mennyire lesz gyors, tehat semmi platform specifikus megoldast nem hasznaltam.

Irtam egy keretrendszert, sajnos sok tesztet mar nem volt kedvem/idom irni :)
Amik megvannak:
STL vector, list, map, sort()-qsort() (novekvo, csokkeno, es random sorozatokon)
rekurziv fuggvenyek ("huszarral vegiglepkedni a tablan", fibonacci)
egyszeru szamitastok (8-64 biten)
UDP csomagok kuldozgetese localhoston
memoria foglalas, felszabaditas, commit -alas, masolas es feltoltes

GUI-s frontend nincs, parancssorbol kell hasznalni.

Par gondolat:

jo benchmarkot irni nem konnyu, nem is allitom, hogy ez az :)

-miert kellett egy n+1 -edik benchmark? mert ilyet nem talaltam :(
-ami beleszamit a teljesitmenybe: az oprendszer, a C++ es C fuggvenykonyvtar, a fordito
-a "mindenki egyenlo" elv igazsagos, de nem ad feltetlenul realis kepet
-"nem irta ki a vegen, hogy hany pontot kaptam!" -> nincs pontszam, mindig ketto vagy tobb eredmenyt hasonlit ossze
-pontossag: 1-2 szazalekos kulonbseg meg tekintheto meresi hibanak
-torekedtem a hagyomanyos megoldasokra: uber_optimized_sse_memcpy() helyett memcpy(), mert ugyis mindenki azt hasznalja, es altalaban ez a leggyorsabb
-a managed kod nagy hatrannyal indul, mert nem a sajat osztalykonyvtarat hasznalom (siman csak /clr -el van forditva a kod) (neha nagyon "szenved" :))
-az eredmenyek sulyozasa: minden teszt es modul azonos sullyal rendelkezik (normalizalva van, pl. ha 3 teszt rendre 0.1, 0.2, 10 mp-ig tart, akkor a sulyok 10, 5, 0.1. Az egyenloseg kialakitasakor figyelembe vett oprendszerek: freebsd 6.3, ubuntu 7.10, win vista x64, win xp sp2
-diff esten a default config fajl: config/default.txt (-cfg -vel lehet modositani: "pbench -cfg config/az_enyime.txt -diff egyik.txt masik.txt")
-a "-diff" nem irja ki a gepek info-it, azt az out/akarmi.txt -ben a fajl elejen lathatod
-a referencia gep mindig a "-diff" utan megadott elso fajl (o a 100%)
-a windows-os exeket msbuild -el forditottam, semmi extra optimalizalas, a linuxosat bjam-el, gcc 4.1.3-al, release modban, -O3 -al
-az msvc forditoja minden kodot ki akart dobni, de azt hiszem, most mar minden lefut :)
-semmit nem allitottam at az operacios rendszeren, hogy jobb eredmenyt kapjak, de megvartam, hogy restart utan minden betoltodjon (pl. Vistan a superfetch megegye az osszes memoriat)

-a teszteket igy futtattam (minden platformra)
pbench -n 10 -q -o out/akarmi.txt -name "hudejo huderossz gep"

aztan:
pbench -diff out/akarmi.txt out/akarmi2.txt... > diff.txt

-olvasd el a helpet: pbench -h

Az en gepemen ez az eredmeny (nem a teljes):


Osszesen
  100.00% (10.133s, 4.69) Ubuntu 7.10 x86, 32 bites kod
   32.41% (15.446s, 14.48) Ubuntu 7.10 x86, wine 0.9.46, 32 bites kod
   67.10% (10.763s, 6.99) Vista x64, 64 bites kod
   53.35% (12.266s, 8.80) Vista x64, 64 bites managed kod (fekete barany :))
   57.91% (11.841s, 8.10) Vista x64, 32 bites kod
   66.44% (9.908s, 7.06) Win XP SP2 x86, 32 bites kod

Modulonkent
    <algoritmusok es adatstrukturak>
      100.00% (1.078s, 44.19) Ubuntu 7.10 x86, 32 bites kod
      101.38% (1.018s, 43.59) Ubuntu 7.10 x86, wine 0.9.46, 32 bites kod
      115.05% (0.984s, 38.41) Vista x64, 64 bites kod
       47.69% (2.157s, 92.67) Vista x64, 64 bites managed kod (fekete barany :))
      112.68% (0.942s, 39.22) Vista x64, 32 bites kod
      105.15% (0.996s, 42.03) Win XP SP2 x86, 32 bites kod
    <rekurzio, egyszeru cpu/fpu>
      100.00% (3.374s, 10.98) Ubuntu 7.10 x86, 32 bites kod
       92.96% (3.676s, 11.82) Ubuntu 7.10 x86, wine 0.9.46, 32 bites kod
      103.82% (3.166s, 10.58) Vista x64, 64 bites kod
      102.12% (3.268s, 10.76) Vista x64, 64 bites managed kod (fekete barany :))
       91.47% (3.776s, 12.01) Vista x64, 32 bites kod
       92.12% (3.699s, 11.92) Win XP SP2 x86, 32 bites kod
    <UDP csomagok localhost-on>
      100.00% (0.372s, 2.23) Ubuntu 7.10 x86, 32 bites kod
        7.96% (4.798s, 27.95) Ubuntu 7.10 x86, wine 0.9.46, 32 bites kod
       14.92% (2.213s, 14.92) Vista x64, 64 bites kod
       14.01% (2.416s, 15.88) Vista x64, 64 bites managed kod (fekete barany :))
       14.73% (2.225s, 15.11) Vista x64, 32 bites kod
       23.87% (1.364s, 9.32) Win XP SP2 x86, 32 bites kod
    <szalak>
      100.00% (0.012s, 1.09) Ubuntu 7.10 x86, 32 bites kod
       18.77% (0.064s, 5.79) Ubuntu 7.10 x86, wine 0.9.46, 32 bites kod
       77.10% (0.016s, 1.41) Vista x64, 64 bites kod
       74.79% (0.016s, 1.45) Vista x64, 64 bites managed kod (fekete barany :))
       51.40% (0.023s, 2.12) Vista x64, 32 bites kod
       51.52% (0.023s, 2.11) Win XP SP2 x86, 32 bites kod
    <memoria foglalas, kommitalas, felszabaditas>
      100.00% (5.297s, 29.22) Ubuntu 7.10 x86, 32 bites kod
       57.93% (5.890s, 50.44) Ubuntu 7.10 x86, wine 0.9.46, 32 bites kod
       94.37% (4.385s, 30.96) Vista x64, 64 bites kod
       88.19% (4.408s, 33.13) Vista x64, 64 bites managed kod (fekete barany :))
       78.25% (4.875s, 37.34) Vista x64, 32 bites kod
       87.91% (3.826s, 33.24) Win XP SP2 x86, 32 bites kod

Reszeredmenyenkent
[..] nem akartam bemasolni ennyi mindent :)

A program illetve a reszeredmenyek itt

Szivesen varok barmifele eszrevetelt errol az igen kezdetleges programrol :)

Hozzászólások

Érdekesebb lenne grafikusan ábrázolva. Egy OOo spreadsheet segíthet. :)

--
trey @ gépház

Egy 64 bites linux pbench?

--
A nyúl egy igazi jellem. Ott ül a fűben, de akkor sem szívja!

gondolom le lehetne forditani 64 bitesre is, de most csak az x86 binaris van fent linuxhoz

alapvetoen magamnak keszult a teszt, es mivel egyik 64 bites linux sem bootol be nalam, nem foglalkoztam vele

mivel most mar nem csak nekem van, akar lehet is :) csak a szabadido es a motivactio szorzatanak nagyobbnak kell lennie, mint a raforditando energia :)

a program a kuldeteset mar teljesitette, igy mar annyira nagyon nem szeretnek idot tolteni vele... :P
gondoltam arra is, hogy akar open source is lehetne, csak elriasztott a regisztralas es a licensz valasztas proceduraja. de majd megejtem par napon belul, akkor megkapod a forrast.
kivancsi lettem volna persze, hogy mit teljtesit a Mac OS X, vagy a win xp x64, vagy a vista x86, a 64 bites linux, stb... es persze lehetnenek ertelmesebb tesztek is :) otletek vannak, ido es motivacio egyelore nincs :)))

feltettem ide:

http://pbench.googlecode.com

ez az elso open source projectem, meg az elso multiplatform, ennek megfeleloen varom az eszreveteleket

az elso kerdesem: ok, feltettem, Te most le tudod szedni a forrast, de nincs jogod commit -alni. Jol sejtem, hogy fel kell vennem a project members listara? vagy nem? akkor most boldog-boldogtalan hozza kell adnom a tagok listajahoz? vagy csak kuldesz egy patch-et? (marmint, ha kell valtoztatnod a forrason...)

egy kis segitseg:
pbench/libpbench -> szinte minden
pbench/libpbench/os -> platform fuggo kod (Arilius, ide fogod tenni a plat_macosx.cpp -t :))
pbench/ -> maga a program (1 darab aprocska c++)

bjam -el lehet forditani

Átnéztem az eredményeket és időnként elég érdekes dolgokat vettem észre, pl. az Ubuntu + Wine jobban teljesít mint az Ubuntu emu. nélkül. Ez hogy is van?

vector.push_back1000x10240
100.00% 0.04600866 Ubuntu 7.10 x86, 32 bites kod
116.59% 0.03946330 Ubuntu 7.10 x86, wine 0.9.46, 32 bites kod

Örülök a tesztproginak tényleg, főleg az eredményeinek, de néhány helyen azért csodálom hogy 20%-os előnyre is szert tesz az win..

(a wine az msvc -vel forditott .exe -t futtatja)

Azert annyira ne orulj :P
Akarhogy is nezzuk, ezek szintetikus tesztek, nem mutatjak a valodi teljesitmenyt. Foleg, hogy az esetek tobbsegeben a gep var az emberre, es teljesen mindegy, hogy 1 szazaddal gyorsabban hajtja vegre a muveletet az egyik gep, ha 1 perccel tobbe kerul megtalalni :P
A teszt egy egzakt kerdesre ad valaszt, a valodi teljesitmenyt nem lehet ilyen konnyen merni.
"Valos" desktop pc tesztek vannak pl. a http://phoronix.com -on.
(sajat gepemen stabilitas/sebesseg/hasznalhatosag teren a windows (xp es vista is) fenyevekkel vezet)