Početak›Forumi›Linuks›Programiranje›JAVA programi – brzina u win i lin!!!
- This topic has 15 odgovora, 7 glasova, and was last updated 17 years ranije by zchira.
-
AutorČlanci
-
10. decembar 2006. u 8:35 am #8127zchiraUčesnik
pre oko mesec dana proceo sam u slobodno vreme da pravim jednostavnu igricu u javi. znam da je java spor jezik pa sam se trudio da ne budzim nista previse. Za razvoj koristim netBeans za linux.
U kodu sam ogranicio max frame rate na 60fps jer vise od toga ne znaci nista.
I sta se desava?
U linuxu mi je frame rate 60 sto me je odusevilo s obzirom na brzinu jave.
Problem je nastao u windowsu! kad sam probao da pokrenem .jar file iz windowsa dobio sam 12fps!!!!
Problem je u delu koda koji crta pozadinu:1 pozadina = spriteCache.getSprite(“pozadina.gif”);
2 g2.setPaint(new TexturePaint(pozadina, new Rectangle(0,0,pozadina.getWidth(),pozadina.getHeight())));
3 g2.fillRect(0,0,getWidth(),getHeight());dakle, sliciza pozadnia.gif se koristi da prefarba pozadinu.
Izgleda da je ovo mnogo bolje implementirano u javi za linux nego u javi za win. Kada iskomentarisem ove linuje i stavim da pozadina bude jednobojna, u winu se framerate povecava na skoro maximalnih 60fps.jel neko ima ideju kako da resim problem sa brzinom u windowsu?
da li za iscrtavanje da koristim neke druge f-je ili da neku drugu klasu (umesto graphics2d)?10. decembar 2006. u 11:51 am #50474unicornUčesnikNemam ideju sta je u pitanju.
Citao sam po forumima da je novi Javin HotSpot kompajler dosta brzi od onog u JRE 1.5. Probaj!
Mislim da je narocito poboljsan rad sa 2D grafikom (double buffering).18. mart 2007. u 11:31 am #50475JMatejaUčesnikPRVO Java nije sporija!!! Pogotovu što je u javi jako lako napraviti višenitnu aplikaciju koje se na savremenom hardware-u vrlo efikasno izvršavaju. O0
Drugo, probaj sa Java 1.6 radim u njoj od prve bete jer je za 2D grafiku značajno poboljšana.
Treće, vidi da li možeš da napraviš da ti se stvari izvršavaju u posebnim nitima.
Poslednje, da Linux je carski za programiranje u Javi ^-^ radim na LInuxu razvoj aplikacija već 3g i samo ih posle uručim Win korisnicima.18. mart 2007. u 1:30 pm #50476civanUčesnikJava jeste sporija od c-a i c++-a ali ne znacajno. U svakom slucaju je znacajno napredovala od verzije 1.0 kad je bila skoro neupotrebljiva.
Sto se tice niti, jedini slucaj kada niti ubrzavaju izvrsavanje alikacije je kada se program vrti na viseprocesorskim sistemima.
18. mart 2007. u 2:28 pm #50477GreenDayUčesnik@civan: gresis. da su threadovi procesi bilo bi tacno. ali ovako, niti realno mogu da ubrazaju rad, mada to previse zavisi od samog programera kako to odradi.
18. mart 2007. u 3:30 pm #50478civanUčesnik@GreenDay
Threadovi su u linuxu implementirani kao lightweight procesi – procesi za koje se ne čuvaju mnoge informacije i dele memorijski prostor sa drugim threadovima istog glavnog procesa.Što se ubrzanja rada tice, apsolutno je netačno da će ga ubrzati samo zato što su dodate niti. Čak je činjenica da će ga usporiti u odredjenoj, zanemarljivoj, meri zahvaljujući tome da kernel mora da preskače iz jedne niti u drugu i pri tome pamti/restorira odredjeni skup registara.
Jedini slučaj kad niti mogu da ubrzaju rad (na jednoprocesorskim sistemima) je ako program mora da čeka neki ulaz ili izlaz, pa u tom periodu čekanja moze da “trci” druga nit, ali takav vid ubrzanja može da se postigne i jednostavnom petljom koja će s vremena na vreme pozivati kernel funkciju za čitanje sa čekanjem od 0 vremenskih jedinica, i, ako nije ništa pročitano, nastavljaće sa poslom koji bi radio gore pomenuti thread.
19. mart 2007. u 12:16 am #50479GreenDayUčesniknemam pojma kako su implementirane niti u javi kod linuxa… niti bilo gde druge.
ali kao sto sam rekao, zavisi dosta od programera, za one koje su kvazi paralelne moze da bude dosta pobolsjanja od sekvencijalnog izvrsavanja.al necu da tupim, posto ne znam kako su implementirane niti, znam samo teorijski 🙂
19. mart 2007. u 7:13 am #50480civanUčesnikSlazem se da moze biti poboljsanja, ali je to poboljsanje (i sa teoretske strane) samo u slucaju programa sa praznim hodom (latency), kada program ceka da se nesto sto ne zavisi od njega samog uradi. Dakle, ako je program neki standardni GUI program, on ceka na kliktanje, ceka na … i ceka na … Dok ceka, u to vreme u pozadini mogu da rade niti i tada ce se brzina povecati.
U slucaju da se vrse neka proracunavanja – na primer potrebno nam je da izracunamo f(x) * g(x), program koji redom racuna f(x), pa g(x) pa ih mnozi ce raditi malkice brze nego program koji pravi posebne niti za f(x) i g(x), pa kad se obe zavrse mnozi rezultate.
19. mart 2007. u 5:20 pm #50481JMatejaUčesnikSavremeni procesori P4> imaju više niti u okviru istog procesora što JVM lepo koristi 🙂 (bez obzira na OS)
Ako imate višeprocesorske mašine tim bolje >:D
Čoveku je trebalo za igrice a tu višenitno programiranje puno znači
I da svakako zavisi od načina na koji se implementiraju niti ali hvala bogu u Javi je mnogo teže napraviti glupost (u c i c++ teže je ne napraviti glupost)
Ali kao što sam već istakao prvo preći na Java 1.6 pa ako to ne reši problem onda tek niti itd….19. mart 2007. u 5:47 pm #50482civanUčesnikPod terminom viseprocesorski sistem, misli se i na sisteme sa visejezgarnim procesorima ili Intelov HT.
-
AutorČlanci
Moraš biti prijavljen da bi postavio komentar u ovoj temi.