Autor Wątek: Pytanie o wydajność JME  (Przeczytany 3321 razy)

Offline ZenekNaHacie

  • Użytkownik

# Czerwiec 25, 2009, 21:12:09
Witam, chciałbym spytać się jak wypada wydajność jMonkey Engine napisanego w Javie do innych silników napisanych w C++? I czy da się zwiększyć wydajność tego silnika stosując kompilatory czasu rzeczywistego jak np JIT jeśli tak to o ile?.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline vashpan

  • Użytkownik
    • Strona

# Czerwiec 25, 2009, 21:28:58
Od dawna domyslna VM Javy jest HotSpot, czyli ta z JIT, nie kumam wiec o co chodzi :)

Java jest przecietnie 30-40% wolniejsza od natywnego kodu. Ale jak jest z jME tego nie wiem, zreszta byloby to dosc trudno sprawdzic ( dwie takie same sceny w roznych silnikach )

Offline ZenekNaHacie

  • Użytkownik

# Czerwiec 25, 2009, 21:30:18
Od dawna domyslna VM Javy jest HotSpot, czyli ta z JIT, nie kumam wiec o co chodzi :)

Aha sorry mam książkę z 2000 roku  ;D Ale może ktoś ma jakieś doświadczenia z wydajnością jME.

Edit: aha i jeszcze jedno czy na wydajność gier w Javie wpływa uruchamianie ich za pomocą WebStart
« Ostatnia zmiana: Czerwiec 25, 2009, 23:01:49 wysłana przez ZenekNaHacie »

Offline Avaj

  • Użytkownik

# Czerwiec 26, 2009, 00:07:51
Java kiedyś była wolna, teraz z każdą wersją jest coraz lepiej.

Webstart nie powinien mieć wpływu na wydajność, bo on tylko pobiera pliki i potem i tak kompilację robi. A co do wydajności to sam spróbuj. Moim zdaniem i tak nie napiszesz tak skomplikowanej gry, żeby mieć problemy z wydajnością języka. JME jest dość mocnym silnikiem i ludzie go używają z dobrymi rezultatami...

Offline hubo

  • Użytkownik

# Czerwiec 26, 2009, 01:04:44
NCsoft uzywa jme do tych apletow: http://aion.plaync.co.kr/info/zone/ (mapa Aion, po ktorej mozna sie poruszac), oraz dostep do postaci przez www z wizualizacja: http://aion.plaync.co.kr/info/search/search?serverID=24&charID=253282

Mozesz jeszcze sprobowac http://ardor3d.com, to jest fork jme, projekt jednego z oryginalnych tworcow silnika.

Offline counterClockWise

  • Użytkownik

# Czerwiec 26, 2009, 07:49:32
Wydajność J2ME jest w porządku, ale trzeba dużo optymalizować - wąskim gardłem jest wyświetlanie na ekran i np. praktycznie nie można sobie czyścić całego "backbuffora" co ramkę i rysować wszystkiego, a jedynie odrysowywać to, co się zmieniło i zostawiać niezmienne rzeczy na ekranie.

Będziesz się wściekał jak bardzo szybkość pracy Twojej aplikacji różni się na różnych telefonach, to sprawa nie tylko hardware'u, a bardziej implementacji konkretnej VM.
Np. moja aplikacja, która na nowiutkim Samsungu wyciąga 20 fpsów na starym Sony Ericcsonie k550i ma 60 fps :)

Offline mac

  • Użytkownik

# Czerwiec 26, 2009, 08:31:36
Wydajność J2ME jest w porządku, ale trzeba dużo optymalizować - wąskim gardłem jest wyświetlanie na ekran i np. praktycznie nie można sobie czyścić całego "backbuffora" co ramkę i rysować wszystkiego, a jedynie odrysowywać to, co się zmieniło i zostawiać niezmienne rzeczy na ekranie.

Będziesz się wściekał jak bardzo szybkość pracy Twojej aplikacji różni się na różnych telefonach, to sprawa nie tylko hardware'u, a bardziej implementacji konkretnej VM.
Np. moja aplikacja, która na nowiutkim Samsungu wyciąga 20 fpsów na starym Sony Ericcsonie k550i ma 60 fps :)

Odpowiedz nie na temat. J2ME to nie JMonekyEngine. Co do jme to wydajnosc ma dobra i nie ma potrzebi nic wiecej robic by przyspieszac.

Offline grrr

  • Użytkownik

# Czerwiec 26, 2009, 10:03:05
Ciężko porównywać wydajność JME do silników w C++. Nikt tego dokładnie nie sprawdzi :) Ale wydajność wydaje się być całkiem dobra, scena nie wiesza się przy odpalaniu GC, generalnie działa całkiem sprawnie. WebStart nie ma wpływu na wydajność, podobnie jak odpalenie appletu.

Offline ZenekNaHacie

  • Użytkownik

# Czerwiec 26, 2009, 10:06:46
Dobra, to jeszcze ostatnie pytanie - o działanie WebStartu. Z tego co zdążyłem zauważyć ściąga się mały plik *.jnlp który ściąga większą aplikację. Czy gdy stworze nowszą wersję aplikacji, a użytkownik odpali starszą ona sama się zaktualizuje czy coś źle zrozumiałem z tego co jest napisane w FAQ na polskiej stronie Javy

Cytuj
Program Java Web Start służy do pobierania aplikacji Java z Internetu i uruchamiania ich. Program Java Web Start:
[...]
    * Daje pewność, że zainstalowana jest najnowsza wersja aplikacji.

PS. @grr odpalenie aplikacji w postaci apletu chyba znacznie ją spowalnia (patrz RuneScape) przynajmniej tak piszą w CORE JAVA 2 Podstawy z 2002

Offline grrr

  • Użytkownik

# Czerwiec 26, 2009, 10:26:16
Co do WebStartu - dobrze zrozumiałeś. WebStartu trzyma sobie aplikację w cache'u i jeśli wykryje, że ma starą wersję, zasysa nowsze jary.

Przeprowadziłem własne testy i aplikacja działała z podobną szybkością jako applet (testy jME). Z tego co wiem, to przeglądarka po prostu uruchamia standardową maszynę wirtualną. W FAQ'u jME nie polecają używania tego silnika jako appletu, głównie ze względu na ograniczoną wielkość dostępnej pamięci (standardowo jakoś 64MB), choć ja tak robię i póki nie zjadam zbyt dużo pamięci, zachowanie jest poprawne. Od 2002 roku wiele mogło się w tej sprawie zmienić.

Offline Moriturius

  • Użytkownik

# Czerwiec 26, 2009, 10:43:51
Jeśli chodzi o wydajność samego wyświetlania grafiki w jME to może być nawet zbliżona do C++ bo LWJGL ma na wszystkie systemy natywne biblioteki, które wykorzystuje do kominikacji z OpenGLem.

IMO waskim gardłem może być logika gry, ale Java w ostatnim czasie zrobiła takie postępy że nie wierzę aby przy amatorskim projekcie sprawiła komuś problemy.

Ps. Sam aktualnie piszę gierkę w Javie z użyciem Enginu 2D Slick.

Offline ZenekNaHacie

  • Użytkownik

# Czerwiec 26, 2009, 10:47:51
64MB pamięci w przybliżeniu pozwolą zrobić na przykład grę z grafiką Quake2 (już wiem jak udało się to z Jake2  :) ) więc jak na aplet jestem zaskoczony tą wydajnością ;) ale chyba użyje całej mocy przy używaniu WebStart
(swoją drogą nie wiem poco ci z Battlefileld Heroes - http://www.battlefieldheroes.com/ pisali tą gre w c++ skoro napisali zabugowaną alternatywę WebStartu  :D ale to dopiero beta mają prawo do bugów)
« Ostatnia zmiana: Czerwiec 26, 2009, 10:53:51 wysłana przez ZenekNaHacie »

Offline Moriturius

  • Użytkownik

# Czerwiec 26, 2009, 15:07:46
(swoją drogą nie wiem poco ci z Battlefileld Heroes - http://www.battlefieldheroes.com/ pisali tą gre w c++ skoro napisali zabugowaną alternatywę WebStartu  :D ale to dopiero beta mają prawo do bugów)

Bo liczy się fajność ;)

Offline ZenekNaHacie

  • Użytkownik

# Czerwiec 29, 2009, 18:45:51
Tak na dłuższą metę to fajna sprawa z tymi apletami, znalazłem kiedyś artykuł tłumaczący dlaczego twórcy quake live wykorzystali własną technologię do stworzenia tej gry przeczytałem tam że Java i Flash3D nie nadawały się z powodu na ich strasznie słabą wydajność. Skoro jednak tak do końca nie jest jestem miło zaskoczony (w porównaniu z silnikiem Quake na pewno są wolniejsze) Do amatorskich webowych gierek jMe powinno się nadać  :)

Offline ZenekNaHacie

  • Użytkownik

# Czerwiec 29, 2009, 21:15:17
Ale czegoś tutaj nie kumam, jME jest pełnym silnikiem gier tzn. z fizyką, audio, inputem, gui idt. czy samym rendererem?