Portál AbcLinuxu, 1. května 2025 05:52

Proč nevěřit benchmarkům a Jamesu Hornerovi

16.2.2007 19:12 | Přečteno: 1203×

Když se chce, tak lze "dobře" navrženým benchmarkem dokázat prakticky cokoliv.

Dnes byl na Squeak-dev konferenci v souvislosti s testováním projektu Exupery zmíněn jeden benchmark porovnávající rychlost C++, Javy a Ruby (mimochodem, vyhrál Common Lisp ;-)). Podobné testy nejde v žádném případě brát vážně a jdou jimi dokázat velice sporné výsledky.

Jako ukázku mohu předložit malý testík, který "dokazuje", že Squeak Smalltalk je rychlejší než Java - což je samozřejmě naprostý nesmysl, vzhledem k tomu, že Squeak používá virtuální stroj, který je napsán ve Smalltaku a je automaticky přetransformován do C. Nemá tedy standardně žádný JIT kompilátor, optimalizované části interpretu bytekódu napsané v assembleru apod.

Kod v Javě:

       int a = 1;
       int b = 0;
       long startTime = System.currentTimeMillis();

       for (int i=0; i<1000; i++)
       {
           try {
               try {
                   int c = a / b;
               } catch (Exception e1) {
                   try {
                       try {
                           int c = a / b;
                       } catch (Exception e2) { int c = a / b; }
                   } catch (Exception e3) { }
               }
           } catch (Exception e4) { }
       }
       System.out.println(System.currentTimeMillis()-startTime);

Ekvivalent ve Smalltalku:

    | a b c |
    a := 1.
    b := 0.
    [
        1000 timesRepeat: [
            [
                 [
                     c := a // b.
                 ] on: Exception do: [
                     [
                         [
                             c := a // b.
                         ] on: Exception do: [ c := a // b ]
                     ] on: Exception do: []
                 ]
            ] on: Exception do: []
        ]
    ] timeToRun

Na mém notebooku mi Java dávala nejnižší výsledky kolem 36 ms, Squeak cca 25 ms.

Na tento test jsem přišel, když se kdysi v rámci jednoho školení na FITu dělalo cvičení s Visual Studiem a já nevěřícně koukal, jak aplikace v C# dlouho chrochtá, než se odhodlá vyhodit chybové hlášení. Doma jsem si rychlost zpracování výjimek hlouběji otestoval (pro tento příklad mi C# nešel pod 100 ms, ale bylo to na jiném stroji - výkonějším ;-))

Nad smyslupností tohoto testu lze mít oprávněné výhrady, ale pravda taky je, že pro mnoho aplikací je rychlost zpracování výjimek dost důležitá (např. Seaside tak zjišťuje aktuální relaci, vyvolává události pro vykreslování atd.).

Takže nevěřte benchmarkům a už vůbec ne těm, co dělám já ;-)

James Horner

Dnes jsem si spokojeně poslouchal svoje oblíbené internetové rádio StreamingSoundtracks.com (nejlepší rádio na světě - a musí to být pravda, protože to sami říkají ;-)) a říkám si - hmm, další krásná skladba, tentokrát ze Statečného srdce... hmm, má trochu jiné aranžmá, takhle ji neznám, že by nebyla na soundtracku? Že by z jeho nějaké rozšířené verze?

Juknu na popisek a ona hraná skadba byla z filmu Bobby Jones: A Stroke of Genius. Tak tohle byl vrchol. O tom, jak James Horner vykrádá sám sebe, o tom jsem neměl vůbec žádné iluze. Že např. v soundtracku k Bicentennial Man lze najít okopírované motivy z Braveheartu, že A Beautiful Mind je prakticky jen trochu přepsaný Bicentennial Man, že v Troji vykrádá motivy z The Mask of Zorro atd. atd., na to všechno jsem si tak nějak zvykl podobně jako na to, že většina skladeb Johna Barryho se od sebe moc neliší. Ale tím, co jsem slyšel, to Horner všechno s přehledem překonal. Ne že by to nebyly opravdu krásné skladby, ale nechápu, proč mu to ti režiséři žerou...

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

16.2.2007 19:22 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
Odpovědět | Sbalit | Link | Blokovat | Admin
Jen tak by mne zajímalo, co za implementaci .NETu to bylo a jak by se chovalo Mono :-)

A mám takové tušení, že návrh lexikálních uzávěrů pro Javu počítá s implementací nelokálního návratu pomocí výjimek, takže na tom třeba zapracují a Java bude lepší než Smalltalk :-))
Ještě na tom nejsem tak špatně, abych četl Viewegha.
16.2.2007 19:46 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
Jen tak by mne zajímalo, co za implementaci .NETu to bylo a jak by se chovalo Mono :-)

Tenkrát to bylo pod Visual Studiem 2003 Professional, ale když jsem to zkoušel nedávno pod .Net 2.0, tak ty výsledky lepší nebyly.

A mám takové tušení, že návrh lexikálních uzávěrů pro Javu počítá s implementací nelokálního návratu pomocí výjimek, takže na tom třeba zapracují a Java bude lepší než Smalltalk :-))

Žádný problém, prostě to otestuji pod VisualWorks ;-)

I'm sure it crashed in the most type-safe way possible.
16.2.2007 19:59 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
Odpovědět | Sbalit | Link | Blokovat | Admin
A nesouvisí to nějak se squeakovským modelem zásobníku? Tipoval bych, že .NET musí při generování stack trace páchat všelijaké vopchliny, které vždy-plně-objektový (vždy-zaručeně-čerstvý :-D) stack ve Squeaku nemusí. Takové ty propojené MethodKontexty nebo CoToTamMáte, já do toho zase tolik nekoukal. :-)
Jak moc jsou ábíčkáři inteligentní? ;-)
16.2.2007 21:01 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
A nesouvisí to nějak se squeakovským modelem zásobníku? Tipoval bych, že .NET musí při generování stack trace páchat všelijaké vopchliny, které vždy-plně-objektový (vždy-zaručeně-čerstvý :-D) stack ve Squeaku nemusí. Takové ty propojené MethodKontexty nebo CoToTamMáte, já do toho zase tolik nekoukal. :-)

Určitě ano. Otázka je, jestli se to dá příjmout jako výmluva, když jsem se u VisualWorks, které jsou optimalizacemi prolezlé skrz naskrz, dostal teď na 12 ms :-D

Holt Smalltalkeři asi neradi čekají, než dostanou svoje oblíbené DNU ;-)

I'm sure it crashed in the most type-safe way possible.
16.2.2007 21:07 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
A HPS engine má takový ten „mixed-mode“ stack, že? Jako že kvůli výkonu jsou normální kontexty na skutečném zásobníku a až při vracení uzávěru ven nebo jiné operaci vyžadující objektifikovaný stack (což nejsou až tak časté operace) se dodatečně objektově materializuje? Mně je jasné, že VW nejsou špatné. ;-)
16.2.2007 21:20 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
Je to nějaký context-to-stack mapping, ale tuhle část jsem studoval podrobněji jen u Strongtalku, kde se kvůli optimalizaci zásobníku na výjimky vykašlali úplně ;-)
I'm sure it crashed in the most type-safe way possible.
18.2.2007 00:01 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
v .NET zalezi v jakem rezimu je aplikace kompilovana jestli "debug" nebo "realease" v dubugu jede opravdu minimum optimalizaci, release je pak uplne jine kafe a hlavne kvuli temto optimalizacim cast method nefunguje (treba zjisteni stavu zasobniku)
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
David Ježek avatar 16.2.2007 22:16 David Ježek | skóre: 83 | blog: Mostly_IMDB
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
Odpovědět | Sbalit | Link | Blokovat | Admin
ja se self-plagiatorstvim nemam osobne zadny problem. ostatne to neni neco, co by horner delal pokoutne a potaji, je to cisty umysl a takoveto variace na sebe sama byvaji pro mne osobne uzasnou zalezitosti. a horner od roku 1986 nemuze udelat nic, cim by si me rozhadal :-D
16.2.2007 22:19 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
Než jsem si přečetl druhou větu, pochopil jsem „self“ v té první úplně jinak. :-) Prosím, v tomhle blogu s tímhle slovem zacházej velmi opatrně. :-D
David Ježek avatar 16.2.2007 22:46 David Ježek | skóre: 83 | blog: Mostly_IMDB
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
hehe, to me vubec v tu chvili ani nenapadlo. na dnesek jsem spal necely 4 hodiny a je to asi videt :-D
16.2.2007 22:35 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
Dobrý to ročník :-) Já se vždycky utěšuju tím, že třeba má za cíl vydat své celoživotní dílo na jednom albu a snaží se, aby znělo co nejkompaktněji :-) Má to i svoje další výhody: "Vida, další zajímavá variace na oblíbené Hornerovy motivy... že by Casper? No jistě..." :-)
I'm sure it crashed in the most type-safe way possible.
17.2.2007 01:46 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
Odpovědět | Sbalit | Link | Blokovat | Admin
zmíněn jeden benchmark porovnávající rychlost C++, Javy a Ruby (mimochodem, vyhrál Common Lisp ;-) )

Tohle mi trochu připomíná některá výběrová řízení na státní zakázky… :-)

Bluebear avatar 17.2.2007 23:42 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
Rozbalit Rozbalit vše Re: Proč nevěřit benchmarkům a Jamesu Hornerovi
Odpovědět | Sbalit | Link | Blokovat | Admin
Inu, jak říká jeden z mých známých (vlastně celá řada mých známých): existují tři úrovně lží: obyčejné lži, sprosté lži a benchmarky.
To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
rADOn avatar 19.2.2007 17:10 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše dalsi soundtrackovy radio
Odpovědět | Sbalit | Link | Blokovat | Admin
Streaming Soundtracks bookmarkuju. a co takhle rivendell, zname ?
"2^24 comments ought to be enough for anyone" -- CmdrTaco
19.2.2007 18:28 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
Rozbalit Rozbalit vše Re: dalsi soundtrackovy radio

Děkuji za tip. Zkusím si najít způsob, jak si ho streamovat. U SST mi na to stačí obyčejný wget přetaženej přes oggsplit.

Škoda, že už je tak úzce zaměřené. Pár naťuknutí do playlistu odhalí, že neobsahuje řadu vynikajících starších soundtracků, které mě v tu chvíli napadly (řada věcí od Basila, To Kill a Mockingbird nebo takové perly, jako je El Cid, který by se tam žánrově mohl hodit).

I'm sure it crashed in the most type-safe way possible.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.