JAVA programi - brzina u win i lin!!!
Dobrodošli, Gost. Molim vas prijavite se ili se registrujte.
Da li ste izgubili vaš aktivacioni e-mail?

Prijavite se sa korisničkim imenom, lozinkom i dužinom sesije

Linuxo Forumi

Stranice: [1] 2   Idi dole
  Štampaj  
Autor Tema: JAVA programi - brzina u win i lin!!!  (Pročitano 1834 puta)
0 članova i 1 posetilac pregledaju ovu temu.
zchira
Sr. Member
****
Van mreže Van mreže

Poruke: 454


« poslato: 10 Децембар 2006, 09:35:19 »

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:
Citat

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)?
Prijavi uredniku   Sačuvana

unicorn
Full Member
***
Van mreže Van mreže

Poruke: 119


« Odgovor #1 poslato: 10 Децембар 2006, 12:51:11 »

Nemam 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).
Prijavi uredniku   Sačuvana
JMateja
Full Member
***
Van mreže Van mreže

Poruke: 108


« Odgovor #2 poslato: 18 Март 2007, 12:31:58 »

PRVO Java nije sporija!!! Pogotovu što je u javi jako lako napraviti višenitnu aplikaciju koje se na savremenom hardware-u vrlo efikasno izvršavaju.  Afro
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  Azn radim na LInuxu razvoj aplikacija već 3g i samo ih posle uručim Win korisnicima.
Prijavi uredniku   Sačuvana
civan
Sr. Member
****
Van mreže Van mreže

Poruke: 350



WWW
« Odgovor #3 poslato: 18 Март 2007, 14:30:22 »

Java 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.
Prijavi uredniku   Sačuvana
GreenDay
Full Member
***
Van mreže Van mreže

Pol: Muškarac
Poruke: 175



WWW
« Odgovor #4 poslato: 18 Март 2007, 15:28:24 »

@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.
Prijavi uredniku   Sačuvana

civan
Sr. Member
****
Van mreže Van mreže

Poruke: 350



WWW
« Odgovor #5 poslato: 18 Март 2007, 16:30:27 »

@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.
Prijavi uredniku   Sačuvana
GreenDay
Full Member
***
Van mreže Van mreže

Pol: Muškarac
Poruke: 175



WWW
« Odgovor #6 poslato: 19 Март 2007, 01:16:07 »

nemam 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 Smiley
Prijavi uredniku   Sačuvana

civan
Sr. Member
****
Van mreže Van mreže

Poruke: 350



WWW
« Odgovor #7 poslato: 19 Март 2007, 08:13:23 »

Slazem 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.
Prijavi uredniku   Sačuvana
JMateja
Full Member
***
Van mreže Van mreže

Poruke: 108


« Odgovor #8 poslato: 19 Март 2007, 18:20:12 »

Savremeni procesori P4> imaju više niti u okviru istog procesora što JVM lepo koristi  Smiley (bez obzira na OS)
Ako imate višeprocesorske mašine tim bolje   Evil
Č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....
Prijavi uredniku   Sačuvana
civan
Sr. Member
****
Van mreže Van mreže

Poruke: 350



WWW
« Odgovor #9 poslato: 19 Март 2007, 18:47:39 »

Pod terminom viseprocesorski sistem, misli se i na sisteme sa visejezgarnim procesorima ili Intelov HT.
Prijavi uredniku   Sačuvana
zchira
Sr. Member
****
Van mreže Van mreže

Poruke: 454


« Odgovor #10 poslato: 19 Март 2007, 19:06:16 »

instalirao sam jdk 1.6 u linuxu i radi kao i pre toga (znaci super) i fps sam ogranicio na maximalno 50. I to je OK.  Problem sa animiranom pozadinom u windowsu sam resio uz pomoc trika koji sam nasao na netu tako da je sad u windowsu sa javom 1.5 fps oko 20 sto i dalje nije dovoljno ali je bolje nego sto je bio. Jos nisam probao da na winu instaliram javu 1.6. Kad probam javicu vam.

A nadam se da cu uskoro da ugrabim neko vreme da privedem igricu kraju pa da je pustim u opticaj (naravno GPL Smiley). Samo da se resim faksa (jos 2 ispita) i civilne vojske (jos 2,5 meseca)
Prijavi uredniku   Sačuvana

GreenDay
Full Member
***
Van mreže Van mreže

Pol: Muškarac
Poruke: 175



WWW
« Odgovor #11 poslato: 19 Март 2007, 23:24:20 »

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.

fala bogu Smiley
Prijavi uredniku   Sačuvana

zchira
Sr. Member
****
Van mreže Van mreže

Poruke: 454


« Odgovor #12 poslato: 21 Март 2007, 16:26:06 »

malo skrecem sa teme.
od kad sam upgradeovao jdk na 1.6 net beans nece da mi se pokrene preko ikonice.
A kad kucam netbeans kaze da ne moze da nadje javu.
Kad ga pokrenem sa:
netbeans --jdkhome /usr/lib/java
onda radi.
kako da mu postavim da ovo bude podrazumevan 'jdkhome' tj. da mogu da ga pokrecem preko ikonice?
Prijavi uredniku   Sačuvana

burga
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 568


Meet Linus


WWW
« Odgovor #13 poslato: 21 Март 2007, 17:23:44 »

Упиши тај ред као команду коју извршава иконица кад на њу кликнеш. Увек имаш десни клик па опције. Ако немаш, напиши детаљније шта имаш - коју дистрибуцију и које графичко окружење, добићеш и детаљнији одговор.
Prijavi uredniku   Sačuvana

Нема Бога, и Дирак је његов пророк
Владимир
Sr. Member
****
Van mreže Van mreže

Pol: Muškarac
Poruke: 330



« Odgovor #14 poslato: 21 Март 2007, 17:36:19 »

U fajlu (netbeans direktorijum)/etc/netbeans.conf izmeni liniju "netbeans_jdkhome"  Afro
Prijavi uredniku   Sačuvana
Stranice: [1] 2   Idi gore
  Štampaj  
 
Prebaci se na: