Starší komentáře ke článku: J2ME pro pokročilé - optimalizace zdrojového kódu
Zpět na článek | Úvodní stránka Interval.cz
Datum vložení: 30.4.2003 8:37:22
Do opraveneho prikladu optimalizace se na 4. radek zrejme vloudil sotek.
Ma tam pravdepodobne byt
int length = array.length;
Datum vložení: 30.4.2003 9:38:23
Je to muj prvni clanek, tak se tam nejaka ta chybka musi vyskytnout. Priste si na to dam uz pozor. Dekuji za upozorneni.
Datum vložení: 30.4.2003 12:02:42
diky za clanek. ale mel bych dalsi 2 otazky.
1) pisete, ze pro optimalizaci na velikost neni radno pouzivat interface. Ale v clanku `Optimizing Java for Size` od Jonathana Hardwicka (<a href='http://www.cs.cmu.edu/~jch/java/size.html)' target='_blank'>http://www.cs.cmu.edu/~jch/java/size.html)</a> se zase pise, ze pouziti rozhrani muze velikost vysledne aplikace snizit, pokud do nej nahazime vsechny konstanty (tedy 'final static' atributy), ktere budeme pouzivat v tride implementovane timto rozhranim. Jak je to tedy doopravdy?
2) no, a pak bych se chtel zeptat, jestli v (polo)interpretovanem Javovskem kodu ma nejaky vyznam pouzivat misto nasobeni nebo deleni cisel mocninami 2 operace bitovych posunu (napr. misto: int y=x/2; psat: int y=x>>1;) a podobne (napr. y=x % 64; a y=x & 63; nebo y=x*256+x; a y=(x<<8)|x; atd.).
Datum vložení: 5.5.2003 13:10:20
1.) Pokud chcete pouzit interface pouze na to, abyste do nej umistil konstanty, tak to je plytvani mistem. Jak jsem jiz napsal interface neimplementuje zadnou funkcnost a je to tedy trida, ktera zabira misto. V pripade, ze interface jiz pouzivate muzete do nej konstanty umistit pro lepsi prehlednost, ale misto Vam to asi neusetri. A navic nektere obfuskatory provadeji i optimalizaci kodu, takze je to ve vysledku zbytecne.
2.) Pri nasobeni a deleni 2 je lepsi pouzit operace bitoveho posuvu. Kdyz byste trochu patral a nasel jak jsou tyto operace implementovany HW, tak Vam to bude hned jasne.
Datum vložení: 6.6.2003 16:45:33
Optimalizovat javovyky kod pomoci bitovych posunu etc. je totalni pakarna. Optimalizace z X*8 na X<<8 zvladaly prekladace fortranu v polovine minuleho stoleti. Ale hlavne jde o to, ze Java ma milion dalsich overhead, takze nejaka uchylna optimalizace aritmetiky se projevi zrychlenim pod jedno promile. A to vsechno za cenu velkeho zneprehledneni zdrojoveho kodu. Wake up, folks!
Datum vložení: 30.4.2003 13:06:39
Píšete o obfuskátorech : "Ochrání také vaši aplikaci před dekompilací." S tím musím nesouhlasit, obfuskace bytecodu pouze zmate kód tak že je po dekompilaci takřka nečitelný. Pro případného "předělavatele" již obfuskovaného midletu to znamená horší čitelnost zdrojového kódu ale v praxi je možné obfuskovaný bytecode převést zpět na zdrojový kód a upravit podle libosti.
Datum vložení: 30.4.2003 13:27:59
Detailisto :-)
Datum vložení: 30.4.2003 14:14:03
Ja vím že je to detail, v praxi nepředpokládám že bude někdo midlety dekompilovat a předělávat. Ale pro mě je to cenný zdroj učebního materiálu, často dekompiluju nějaký midlet a koukám jak je udělaný, proto vím moc dobře co dělá obfuskátor a jaké to je se pak v obfuskovaném kódu vyznat.
Ale jak říkám není to standartní postup a moje poznámka byla spíš míněna přátelsky než jako výtka ;o).
Datum vložení: 5.5.2003 13:12:13
Ano mate pravdu. Mel jsem spis napsat, ze zneprijemni cteni zdrojoveho kodu po dekompilaci.
Datum vložení: 6.5.2003 5:33:47
prosiim, rad bych se dozvedel odpoved i na muj dotaz
Datum vložení: 6.5.2003 8:40:59
Jestli se jedna o dotaz s predmetem "dalsi 2 otazky", tak se zkuste podivat na 4 prispevek tohoto clanku.
Datum vložení: 5.5.2003 21:13:01
Sam Sun doporucuje psat prehledny kod a nechat optimalizaci na interpretu/prekladaci (treba ta "optimalizace" cyklu je tak primitivni ze ji zvladaj i prekladace z dob kdy sem se ucil programovat). Navic optimalizovat pamet kdyz clovek nema vubec zadnou kontrolu nad alokaci a uvolnovani pameti, no nevim co na to rict, jen to, ze pokud mate omezenou pamet tak je Java naprosto nevhodnej jazyk.
Datum vložení: 7.5.2003 14:10:24
Musim nesouhlasit a to nejen s ohledem na Javu, ale i na .NET prostredi. Optimalizace prace GC je dnes na vysoke urovni a naopak takove zefektivneni prace s pameti, jake nabizi GC (paralelni defragmentace pameti, optimalizace pruchodu jednotlivych generaci, atd.) tak muze byt jeste lepsi a algoritmizacne propracovanejsi nez prima alokace. Dokazuji to i nektere testy, co jsme delali v Microsoftu i s ohledem na unmanaged kod. Jina vec, co souvisi s vykonem je prace JITu (kterou v tuhle chvili dela kompletne jen MS v compact frameworku), ale GC je dnes jiz mozne povazovat za vysoce optimalizovane.
Datum vložení: 7.5.2003 3:41:02
Zdravim, zacal jsem cist clanky o j2ME a moc me to zaujalo. Doma jsem si nainstaloval J Builder personal a na to rozsireni MicroEdition. Zkusil jsem si potom otevrit priklad na helloworld, ktery je k dispozici original od Borlandu, ale porad mi to hlasi chyby, ze nemuze najit knihovny javax.microedition .... Nevim jestli mam jeste naistalovat nekde nejake doplnky nebo tak neco. Myslel jsem, ze kdyz jsem nainstaloval rozsireni ME, tak ze v tom je i J2ME ..... diky moc za jakekoli rady.....
martin
Datum vložení: 10.5.2003 7:47:05
pravdepodobne musite nastavit parametr -classpath k souboru se vsemi zkompilovanymi tridami. zkuste se na to jeste podivat v napovede nebo v souborech o instalaci.
Datum vložení: 21.8.2003 15:31:49
Cely 'trik' je v tom ze ve vlastnostech projektu musite zmenit typ pouziteho virtualniho stroje z J2SE na jiny, zalozeny an J2ME
Datum vložení: 6.11.2003 12:49:56
Mrkni sa na forum.nokia, tam je rieseny JBuilder v mnohych prispevkoch
Datum vložení: 6.11.2003 12:58:20
clanok to celkom pekne zhrnul
Pomerne dost sa da ziskat pisanim flat kodov, zabudnite na pekny objektovy design, seekovanie vo virtualnych tabulkach trva a trva {to je aj vseobecne vysvetlenie "zahady" z prikladu s cyklom v clanku}
pozor na locky pri multithreadovych aplikackach
na zaver, j2me ziskala nejaku performance pri garbage collectingu zabudnutim na finalize metodu{celkom pekny trick ;-)}