Pokud to myslite s benchmarkovanim vazne, tak 1) opakujte test mnohokrat v ramci jednoho behu VM (odstitnite kouzla, ktera dela hotspot) a pocitejte az posledni behy. 2) zkuste to vyhodnotit za pouziti nejake vazne minene statistiky. 3) zjistete, zda jsou vase vysledky stabilni. (napr. zda se nezmeni, pokud zmenite poradi, v jakem testujete jednotlive pristupy a neni trebas posledni vzdy nejrychlejsi.)
Z hlediska praxe: navrh je IMO ve vetsine pripadu rychlejsi nez nejaky vysledek mikrobenchmarku. Nepisete herni engine. -- S pozdravem Ondřej Nekola http://twitter.com/satai 2010/7/27 Pavel Nemec <neme...@gmail.com> > Dobry den, > resim takovy maly problem toho co je lepsi pouzivat pro rozliseni > typu objektu. > > Ja jsem zastance pouzivat interface a nechat compilator/runtime aby si > vybral, kterou metodu zavola. Muj oponent pochazi vice z Ccka a je mu > blizsi pouzivat klice, pripadne instanceof. > > Ja jsem mel vzdy za to ze instanceof je velmi pomale a nedoporucuje > se, nicmene jsem se docetl, ze to jiz davno neplati. > > Udelal jsem si maly test, kdy zjistuji zda je objekt daneho typu na > zaklade volani > instanceof > interface - nezjistuji, pouze volam interface metodu > na zaklade objekt.getID() + pretypovani. > > Myslel jsem ze interface bude s prehledem nejrychlejsi, nicmene tomu > odpovida jen maly pocet volani (volam v cyklu a zjistuji jestli objekt > v listu je daneho typu) > > pro 20 000 polozekinstanceof: 20000 item took 25milsec, and result is > 0 (should be 0) > interface: 20000 item took 4milsec, and result is 0 (should be 0) > id: 20000 item took 23milsec, and result is 0 (should be 0) > > pro vysi pocet pak rychlost interface jiz kleas a napriklad pro 20M > instanceof: 20000000 item took 284milsec, and result is 0 (should be 0) > interface: 20000000 item took 380milsec, and result is 0 (should be 0) > id: 20000000 item took 188milsec, and result is 0 (should be 0) > > > Zdrojak je nejednodusi mozny, viz: http://pastebin.ca/1909107 > > je tohle znama vec, a je tedy skutecne jedno zda(co se tyce rychlosti) > pouziji instance of misto interface? > > > Diky, > Pavel >