Privandrovalci z C jsem myslel Vase kolegy, ne Vas osobne. A ze je instanceof nekdy uzitecne, o tom nemam pochyb. Sam jej obcas pouzivam.
K puvodni otazce, tj. rychlosti instanceof a volani metody pres interface: V prezentaci na http://wiki.jvmlangsummit.com/images/c/c9/Ohrstrom-lambdas-2010-07-26.pdf Fredrik Öhrström na slidu 9 rika: How fast is invokeinterface? Depends on the implementation: - JRockit uses a constant time lookup - Hotspot uses an iteration over the implemented interfaces Je tam i neco malo o instanceof. Z.T. -- Zdenek Tronicek FIT CTU in Prague Navrhujete API? http://www.java.cz/article/evoluceapi neme...@gmail.com napsal(a): > Se nam to trochu zvrhlo. Z puvodny otazky proc je neco rychlejsi nez neco > jineho, tu mam otazku typu, "proc to chces vlastne vedet" > > Takze pro uprseneni proc se na to ptam. Nejsem puvodni Ceckar, ba naopak. > S > Ceckari ale hodne pracuji a ty prave prichazy (jak vam neuniklo) s > konstrukcemi typu if(getID()==...) nebo instanceof. Na tyhle cckove > archetypy, ktere zkouseji tahat do javy, jsem mel dva argumenty. Prvni je > ze > to neni objektove (coz na cckare moc neplati, protoze nemysli v objektech) > a > druhy (ktery akceptuji mnohem radeji), ze to jvm vykona mnohem rychleji. > > Jednou jsem si chtel ten druhy argument overit a vysledkem byl muj > prispevek > do konference tak tedy, proto jsem se na tohle ptal. > > "Zdeněk Troníček" writes: > >> Dobry den, >> >> tohle je typicke pro privandrovalce z jazyka C (nic ve zlem, C je super >> jazyk). Tito programatori chteji u kazdeho prikazu vedet, jak se prelozi >> a >> jak se provadi (to samo o sobe samozrejme neni spatne, spis naopak) a >> pak >> se snazi pouzivat ty "nejefektivnejsi" konstrukce. >> Jakkoliv se to muze zdat prinosne ci alespon neskodne, vetsinou to vede >> k >> tomu, ze kod je zaplevelen temito "efektivnimi" konstrukcemi, ktere >> obvykle snizuji citelnost a jen malokdy vedou k tomu, ze program je >> skutecne rychlejsi. Proto by mel kazdy rozumny vedouci projektu takoveho >> "optimalizatora" vytahat za usi. >> Pokud chcete optimalizovat, pustte profiler na funkcni program, najdete >> misto, kde program travi vetsinu casu ("measure, don't guess") a pak >> optimalizujte. Snazit se odhadnout, kde bude potreba optimalizace, je >> hadani a i ti, kteri rozumeli mailu Ladi Thona v tomto vlaknu, by meli >> uspesnost takoveho hadani pravdepodobne nizkou. Navic, dokud neni >> potreba >> optimalizovat, nema smysl nejakou optimalizaci delat. >> >> Takze: 1) zamerte se na spravny navrh (jak tu psal Dagi), >> 2) piste srozumitelny kod, >> 3) pokud je vysledny program pomaly, pouzijte profiler a pak pripadne >> optimalizujte. Ne vsak drive! >> >> Jinak potreba instanceof by vas mela vest k zamysleni, zda je vas navrh >> optimalni a zda by misto instanceof nebylo lepsi pouzit virtualni >> metodu. > > Razim uplne stejny pristup. Dokonce pokazde kdyz vidim if tak se ptam proc > to neni mozne udelat pomoci interface a volanim metody. Skutecne jsou ale > problemy, ktere se pomoci objektu a dedeni resi velmi obtizne. V nasem > pripade je to c-ckovy kod na nejnizsi vrstve, ktery komunikuje s FSM v > jave. > Takze vasi dobre minenou radu musim brat s rezervou. > > P.N. > >> >> Z.T. >> -- >> Zdenek Tronicek >> FIT CTU in Prague >> >> >