plelkesMedlem sedan mars 2002823 inlägg Hej hopp,
i Libendo´s kurs om javaprogrammering hittade jag följande citat:
Bytekoderna i Javaprogrammet styr den virtuella Javamaskinen att utföra det som koderna betyder. Det blir som att ha en processor i en annan processor. Egentligen innebär ju detta att Java är ett interpreterat språk, eftersom bytekoderna för Java VM direktöversätts vid körning och får den verkliga processorn att utföra olika saker. Detta innebär i sin tur att Javaprogram i regel är cirka tio gånger långsammarevid körning än de skulle vara om de kompilerats direkt för den verkliga processorn.
- stämmer detta?
- kan man göra något för att undvika detta?
# stämmer detta?
Ja, i vissa lägen gör det säkert det. Det är därför du inte ser avancerade 3D-spel skrivna i Java. Att prestandan däremot konstant skulle vara 10ggr sämre är ju B-S. Utvecklingen av JVM:erna pågår konternuerligt.
Men, det man måste fråga sig och det som man måste inse är att i dagens system, med dagens processorer, så är inte beräkningshastigheten den trånga sektorn. Långt därifrån. Det som kostar prestanda och som är viktigare är allt från diskaccess till bandbredd etc.
Många av dagens största affärssystem med miljontals användare är skrivna i Java, banksystem och annat med kopiös last som ändå svarar blixtsnabbt. Sådana system baserar sällan sin framgång på hastigheten att multiplicera flyttal eller något annat. Skall du däremot skriva snabba FPS-spel så är det ju som sagt en annan femma. Så, att stirra sig blind på beräkningshastighet är oftast ganska irrelevant i dagens läge.
Som exempel, Vasaloppets resultatinsamling och presentation är skriven i Java. Under själva loppet utförs mellan 500 och 1000 databassökningar i sekunden och systemet har drygt 30 miljoner träffar på en dag. Hade det gått snabbare/blivit bättre om man skrivit det i assembler? Nej, antagligen inte :e.
# kan man göra något för att undvika detta?
Ja, du kan koda dina applikationer i C++ och assembler.
plelkesMedlem sedan mars 2002823 inlägg tack för ditt svar sgtpepper
Då är det för mig bara att plugga vidare på java-programmering
plelkes skrev:
tack för ditt svar sgtpepper
Då är det för mig bara att plugga vidare på java-programmering
Gör det! Java har gått om C++ och används i princip överallt, från servrar till mobiltelefoner!
Det enda jag personligen tycker är tråkigt och mindre bra är fönsterprogrammering i Swing, det är ungefär lika roligt som att dricka glykol :). Men nu finns ju SWT så nu är ju det problemet ur världen.
spangoMedlem sedan juni 20008 205 inlägg I och med att JVMer utvecklas och blir mer sofistikerade har Java (precis som .Net program eller andra "managed" miljöer) möjligheten att bli snabbare än C++ eller assembler.
När bytekoden JIT:as första gången till native kod görs en avvägning mellan hur mycket krut som ska läggas på optimering jämfört med hur snabbt man vill att JIT-kompileringen ska gå. Men en virtuell maskin kan sedan upptäcka att en viss kodsnutt är en flaskhals, och då kompilera om just den biten med högre optimeringsgrad. Ganska avancerade saker, och detta kan bara göras med en managed miljö. Suns JVM är väl kanske inte den bästa på det här, medan IBM och Bea System (vars JVM utvecklas i Stockholm om ni inte redan visste det) har mer avancerade JVM-implementationer (vilket helt off-topic gör att man undrar varför just Suns JVM skulle ha rätt att ingå i windows).
Ytterligare en fördel med managed kod är att den kan optimeras för en viss hårdvara (exempelvis en viss processors instruktionsuppsättning), medan ett program som distribuerats som native kod ofta är optimerad på ett generellt sätt för att passa fler typer av hårdvara.
Det finns fall då Java/.Net inte är lämpligt, exempelvis i drivrutiner eller hårdvarunära programmering. Att inte använda en managed miljö och ange prestanda som orsak är i allmänhet ren okunskap.
LimeMedlem sedan sep. 2001961 inlägg
developer skrev:
.... Suns JVM är väl kanske inte den bästa på det här, medan IBM och Bea System (vars JVM utvecklas i Stockholm om ni inte redan visste det) har mer avancerade JVM-implementationer (vilket helt off-topic gör att man undrar varför just Suns JVM skulle ha rätt att ingå i windows).
Faktum är att $un inte har krävt att M$ ska sätta in just $un's JVM, men om dom ska ha en JVM förinstallerad, vilket både M$ och $un vill så ska den vara kompatibel med 1.3.1 eller 1.4
/Lime