[ Nedeljko @ 23.08.2006. 21:06 ] @
Koliko ima istine u mitovima da Java programi sporije rade od C++ programa i da se Java programi sporije pokreću (otvaraju) od C++ programa? Kolike su razlike u pitanju? |
[ Nedeljko @ 23.08.2006. 21:06 ] @
[ djalfirevic @ 24.08.2006. 11:12 ] @
Specifikacija Jave obuhvata dve relativno nezavisne celine: specifikaciju Java programskog jezika i specifikaciju Java Virtuelne Mašine (JVM). Speficikacija Java programskog jezika se značajnije ne razlikuje od specifikacija drugih objektno orijentisanih jezika, dok specifikacija JVM predstavlja novinu u odnosu na druge objektno orijentisane jezike opšte namene. Specifikacija Java Virtuelne Mašine predstavlja platformu za izvršavanje programa u čijoj osnovi se nalazi programski model imaginarnog – Java procesora. Programi napisani programskim jezikom Java se prevode za izvršavanje na Java platformi. Tačnije, izlaz iz procesa prevođenja Java progama predstavlja odgovarajuća sekvenca bytecode instrukcija – asemblerskih direktiva Java procesora. Za izvršavanje na konkretnoj računarskoj platformi, neophodno je postojanje odgovarajućeg interpetera, koji ostvaruje funkcionalnost zamišljenog procesora tako što preslikava skup bytecode instrukcija, u skup instrukcija karakterističnih za ciljnu platformu.
Posledica ovakve politike je smanjena efikasnost Java programa, uz obezbeđenu prenosivost na sve računarske platforme za koje postoji realizovana JVM. Za povećanje efikasnosti Java programa koriste se takozvani JIT (Just-In-Time) kompajleri, koji pod izvesnim okolnostima mogu da ubrzaju izvršavanje programa 10 do 50 puta. Osnovna ideja upotrebe JIT tehnika je da se prilikom prvog poziva neke metode, izvrši prevođenje Java bytecode instrukcija koje je čine, u sekvencu instrukcija koje se neposredno izvršavaju na konkretnoj platformi (native code). Svaki sledeći poziv ove metode se direktno preslikava u sekvencu instrukcija koje se neposredno izvršavaju. C++ ipak poseduje malo veću efikasnost, mada to dosta zavisi od tehnike programiranja. Primera radi, kada programer pravi for klauzulu, Microsoft tvrdi da je operacija dekrementiranja skoro duplo brža od operacije inkrementiranja. U knjizi IT Project+, od William Heldman-a, na strani 444, ima interesantno poglavlje, koje se zove nešto tipa, zašto je Microsoft bolji, ili tako već nekako. Interesantna stvar jeste vezana za poslednje verzije operativnih sistema koji se duplo brže izvršavaju od prethodnih. Kako? Microsoft svaki put kada pravi novi operativni sistem vrši optimizaciju koda, otvarajući i zatvarajući zagrade u for, switch,... klauzulama, zatim prevodi operacije inkrementiranja u dekrementiranje, i sl. Dakle, C++ jeste optimalniji za neke stvari, ali ipak je to dosta vezano za stil programiranja. Takođe, normalno je da C++ bude efikasniji kada on nije platformski nezavisan, za razliku od Jave. Nadam se da te nisam mnogo udavio... [ Blue^demoN @ 31.08.2006. 02:09 ] @
Citat: djalfirevic: Takođe, normalno je da C++ bude efikasniji kada on nije platformski nezavisan, za razliku od Jave. Mislim da si hteo reci nije platformski ZAVISTAN, za razliku od jave [ sasa_vu @ 31.08.2006. 02:26 ] @
Odakle ti da je Java platformski zavisna??
[ markic @ 31.08.2006. 07:42 ] @
Dobro je covek napisao. Ta dvostruka negacija se cesto razlicito tumaci.
[ djalfirevic @ 03.09.2006. 07:54 ] @
Citat: markic: Dobro je covek napisao. Ta dvostruka negacija se cesto razlicito tumaci. Hvala što si ih usmerio... [ gojava @ 03.09.2006. 20:46 ] @
Dvostruka negacija nije dozvoljena u engleskom jeziku, dok u srpskom jeste. Čovek je dobro napisao.
Bila je svojevremeno priča na Internetu, mada nisam probao, da klase iz tada novog NIO paketa, mogu da u većini slučajeva odrade posao jednakom brzinom kao da je kod pisan u C++. p.s. Imajte u vidu i da je C++ sporiji od C-a. [ toroman @ 04.09.2006. 20:38 ] @
Java jeste malo sporija u nekim situacijama, mada se ne radi o nikakvim drastičnim usporenjima, mislim ono ... ljudi koriste svakakve jezike, od pythona, rubyja, perla, tcl'a i drugih koji su mnogo sporiji od C++'a pa se nikad ne spore oko toga. Uvijek se porede C++ i Java !? Čemu ti kompleksi od C++'a stvarno ne znam ...
Glavno je napisati dobar algoritam - tu je složenost. E, a da li će se neka akcija završiti za milisekundu ili dve duže - to retko kome smeta. A ako kome smeta, onda nek uzme C++. Neko je naravno posvetio svoje dragocijeno vrijeme : http://www.ibm.com/developerworks/java/library/j-jtp09275.html Eto, Java čak može biti i brža od C++ programa ... Zašto? Pa zbog algoritma ... Um caruje, snaga klade valja, LOL :) [ glock @ 04.09.2006. 20:55 ] @
Citat: toroman: E, a da li će se neka akcija završiti za milisekundu ili dve duže - to retko kome smeta Sekund-dva moze cesto zivot da znaci, posebno u real time sistemima. Da ne spominjem da je standardna JVM Garbage Collector implementacija nedeterministicka, gdje se ne zna kada ce GC da se izvrsi, sto predstavlja veleiki potencijlani problem. Ali ovakve aplikacije su ipak exception nego pravilo. [ djalfirevic @ 05.09.2006. 07:47 ] @
Citat: glock: Sekund-dva moze cesto zivot da znaci, posebno u real time sistemima. Da ne spominjem da je standardna JVM Garbage Collector implementacija nedeterministicka, gdje se ne zna kada ce GC da se izvrsi, sto predstavlja veleiki potencijlani problem. Ali ovakve aplikacije su ipak exception nego pravilo. Zamisli sekund-dve u protivvazduhoplovnoj odbrani... Za sekund-dve, odmah ti na vrata pokuca HARM raketa... Naravno, sekund-dve u korisnicki orijentisanim aplikacijama ne znace nista preterano tako da to nije veci problem, ali eto Nedeljko je pitao pa da ga ispostujemo. [ Au197/79 @ 05.09.2006. 08:06 ] @
Pa za te sekund dve zavisne aplikacije sumnjam da bi se u C++ radilo. Tu je i C previše.
[ Dejan Lozanovic @ 29.10.2006. 09:12 ] @
Ma dajte momci nemojte bas toliko da ste skepticni, java sasvim lepo moze da radi u realtime sistemima,
http://java.sun.com/javaone/sf/slot_car.jsp http://www.javaworld.com/javaworld/jw-03-2002/j1-02-robots.html A drugo voleo bih da pitam sagovornike koji kazu da je C++ ili C mnogo za takve stvari , da li su nekada radili na nekom RT projektu pa imaju takva iskustva. [ Au197/79 @ 29.10.2006. 11:48 ] @
www.javolution.org je tu odavno. Ima zanimljive rezultate: http://javolution.org/doc/benchmark.html gde noviji JDK sa novijim klasama (iz java.util paketa) često postiže bolje rezultate od ovih optimizovanih zamena. A do pre nekog vremena su zvanične implementacije bile značajno sporije.
Ja nemam iskustva u RT programiranju, ali sam čitao da se za neke kritične aplikacije koristi Ada, da se za neka ekstra optimizovana izračunavanja koristi Fortran ili bar biblioteke pisanje u njemu... [ Dragi Tata @ 29.10.2006. 13:43 ] @
Citat: Dejan Lozanovic: Ma dajte momci nemojte bas toliko da ste skepticni, java sasvim lepo moze da radi u realtime sistemima, Može u "soft real-time" sistemima. U "hard real-time" ne može. Ne toliko zbog brzine, koliko zbog nedeterminizma. Uostalom, za takve sisteme JVM i ne postoji. Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|