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

Odpovedet emailem