Oto Buchta napsal(a):
> Tato debata presne ukazala, ze lide se deli na profileristy a
> premyslivce (pozor, ani jedno neni mysleno hanlive!).
> Typicky profilerista odpovi o zbytecnosti male optimalizace, o
> dulezitosti zachovani citelnosti kodu, nutnosti overit i jinde (jine
> JVM, stroj, , GC ci kdovicojeste) nesmyslnosti benchmarku, nutnosti
> prepisu benchmarku atd. a maji naprostou pravdu - tento rozdil je
> naprosto zanedbatelny a na nekterych platformach muze byt diference
> tohoto marginalniho pripadu pod rozlisovaci schopnost testu. Typicky
> premyslivec (v tomto vlakne konkretne Ladislav Thon) se pokusi
> odpovedet - prestoze onen rozdil je naprosto zanedbatelny a na
> nekterych platformach muze byt diference tohoto marginalniho pripadu
> pod rozlisovaci schopnost testu (ale to uz jsem psal, neniliz pravda?
> ;-) ).

Je to trochu jinak. Asi je to tim, ze obcas zapomenu neco napsat...
Ta puvodni otazka "jak rychle je invokeinterface?" totiz nema jednoznacnou
odpoved. Nebo alespon ne takovou, jakou mozna ocekavas.
Muzeme samozrejme napsat mikrobenchmark, zmerit to a porovnat rychlost
napr. s invokevirtual. Jenze: 1) to zavisi na JVM (rozdily budou nejen Sun
vs. Oracle, ale i mezi verzemi), 2) vykonavani techto instrukci zavisi na
kontextu. JVM napr. dokaze nahradit virtualni volani normalnim
(statickym), pokud vi, ze dana reference odkazuje na objekt daneho typu
(to muze vedet, protoze vi o vsech natazenych tridach).

Jinak microbenchmarky samozrejme smysl maji. Ale ridit se jimi pri psani
kodu smysl nedava.
Zajimava je i puvodni otazka "jak je to s rychlosti invokeinterface a
instanceof?". Opet ale plati, ze pri psani kodu bychom nemeli klast duraz
na zavery, ktere plynou z odpovedi.

Z.T.
-- 
Zdenek Tronicek
FIT CTU in Prague

Odpovedet emailem