Pro maly pocet polozek je interface vyrazne rychlejsi. Testoval jsem i vytvareni pole pouze jednou a vysledek je stejny. Tj pro maly pocet je interface rychlejsi, pro vetsi pocet roste rychlost getId().
Zkusim to s jednim elementem. P. 27.7.10, Ondra Medek <[email protected]>: > Mno jestli tady ten vykon neovlivnuje vice ta prace s ArrayList nezli > sledovane operace. Protoze je list velky, pak se projevu kesovani, GC, > apod. Spise bych zkusil male pole, ktere se alokuje jen 1x cca treba > jen 10 elementu, a to pole pak prochazet vicekrat. Anebo mit jen jeden > element? > > 2010/7/27 Pavel Nemec <[email protected]>: >> 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 >> > > > > -- > Ondra Medek >
