Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Výkon her v Javě

Aktivity
Avatar
Odpovídá na Kit
Luboš Běhounek Satik:28.12.2012 19:08

C# je už také multiplatformní, - viz mono ( http://www.mono-project.com/Main_Page ), umí android, linux, iOS...

Java se hodí na opravdu multiplatformní hry - do mobilů apod, ale zaměřovat se při programování běžných desktopových her na multiplatformnost mi (zatím) přijde zbytečné, stejně přes 95% lidí používá Windows a kdo ne, má prostě smůlu, vždycky se najde nějaký systém, na kterém to nepojede, pokud to pojede naprosté většině, tak mi to stačí.

Odpovědět
28.12.2012 19:08
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:28.12.2012 19:24

Mono nainstalované mám, ale neběží v něm všechno, takže mám smůlu. Na druhou stranu tady mám dostatek jiných programovacích jazyků.

Nahoru Odpovědět
28.12.2012 19:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Fugiczek
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Fugiczek:28.12.2012 19:25

Neviděl jsem zatím nějakou úspěšnou multiplatformní aplikaci v Monu. Nejspíš to bude tím, že to není nějak extra dokonalé :-) Možná jich je pár méně známých na Linux/iOS, ale na android? Ten občas skoro nezvládá Javu, natož emulaci C#...

 
Nahoru Odpovědět
28.12.2012 19:25
Avatar
Odpovídá na Vojtěch Pospíchal
Michal Krajčovič:28.12.2012 19:34

mal som podobný nápad ale ja som túto tému ukončil komentárom "ok" a niekto sa zase začal hádať...

 
Nahoru Odpovědět
28.12.2012 19:34
Avatar
Odpovídá na Michal Krajčovič
Vojtěch Pospíchal:28.12.2012 20:34

Další smysluplný komentář k tématu který tu naprosto jistě nerozpoutá další vlnu flamu když se mi ji konečně podařilo uklidnit!

 
Nahoru Odpovědět
28.12.2012 20:34
Avatar
Odpovídá na Fugiczek
Vojtěch Pospíchal:28.12.2012 20:36

Ono s tím Androidem jak kdy že? Přece jenom Androidu bych dal ještě chvilku času. Jeho vývoj aby byl Android dokonalý bude trvat ještě dloooouho.

 
Nahoru Odpovědět
28.12.2012 20:36
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Vojtěch Pospíchal
Kit:28.12.2012 20:39

Než se C# přizpůsobí Androidu, bude na něm Java fungovat už dlouho.

Nahoru Odpovědět
28.12.2012 20:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Vojtěch Pospíchal:28.12.2012 20:44

Což je celkem logické když Android na Javě stojí že.

 
Nahoru Odpovědět
28.12.2012 20:44
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Vojtěch Pospíchal
Kit:28.12.2012 20:50

Ono to zas tak úplně logické není. Mohl by tam být i C#, kdyby se Microsoft trochu snažil. Mohl by tam být Lisp (mám ve svém PDA), mohl by tam být Python, Lua nebo cokoliv jiného. Je to otevřený systém.

Nahoru Odpovědět
28.12.2012 20:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Vojtěch Pospíchal:28.12.2012 21:19

Ano mohl by tam být Lua, Ruby, Python ale nemyslím si že by se Microsoft měl snažit s C#. Přeci jenom asi těžko by chtěli dobrovolně podporovat konkurenci když ho sami mohou implementovat do Windows phone. Což také dělají.

 
Nahoru Odpovědět
28.12.2012 21:19
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Vojtěch Pospíchal
Kit:28.12.2012 21:30

Když se Microsoft nebude snažit dát C# do Androidu, tak tam nebude. A Java bude mít navrch.

Ten jeho Windows Phone vypadá na propadák, takže pokud se nebude snažit, zůstane C# jen na jeho desktopech a serverech.

Nahoru Odpovědět
28.12.2012 21:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Vojtěch Pospíchal:28.12.2012 21:55

A myslím že i tak to budou výdělky dost dobré na to aby ho to minimálně ještě na pár let uživilo. A ano Windows Phone je propadák. Už vzhledem k tomu do jak (ne)výkoných zařízení je cpe.

 
Nahoru Odpovědět
28.12.2012 21:55
Avatar
Kit
Tvůrce
Avatar
Kit:29.12.2012 0:55

Udělal jsem si jednoduchý benchmark v Javě. Určování vzdáleností je ve hrách častá operace, používá se Pythagorova věta. Zkusil jsem si tedy do proměnných a, b uložit souřadnice bodů a spočítat jejich vzdálenost.

c=Math.sqrt(Math.pow(a[0]-b[0],2)+Math.pow(a[1]-b[1],2));

Čas: 300 ns

c=Math.sqrt((a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1]));

Čas: 20 ns

Výsledek byl v obou případech stejný, ale ten druhý byl 15× rychlejší. Jen pro zajímavost: Ten druhý byl spočítán stejně rychle, jako v C i ve Fortranu.

Z toho je vidět, že některé funkce, jako např. Math.pow() jsou velmi drahé. Zrovna tuto funkci vůbec není radno používat k umocňování na druhou a je lepší použít násobení. Pokud se ještě navíc každá složka souřadnic vytahuje z objektu samostatným getterem, je o lenivost programu postaráno.

Takových velmi často volaných funkcí je víc než dost a jejich nesprávné používání může velmi zpomalit aplikaci bez ohledu na to, jestli je to v C#, Javě, C++ nebo i v jiném jazyku.

Nahoru Odpovědět
29.12.2012 0:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Kit
Kit:29.12.2012 1:36
c=Math.sqrt((a.getX()-b.getX())*(a.getX()-b.getX())
           +(a.getY()-b.getY())*(a.getY()-b.getY()));

Tak jsem si zkusil v Javě ještě tuhle hrůzu, která mi ale poskytla velmi pěkný výsledek 20 ns. Tedy stejný jako v předchozím případě bez použití Math.pow() a srovnatelný s C či Fortranem. A to při použití objektů s privátními proměnnými a gettery.

Java není pomalá.

Nahoru Odpovědět
29.12.2012 1:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
vodacek
Tvůrce
Avatar
Odpovídá na Kit
vodacek:29.12.2012 8:48

C# pro andoidy, inakouslajabka již je http://xamarin.com/

 
Nahoru Odpovědět
29.12.2012 8:48
Avatar
Odpovídá na vodacek
Vojtěch Pospíchal:29.12.2012 9:51

No vypadá to zajímavě ale áte to někdo ozkoušené?

 
Nahoru Odpovědět
29.12.2012 9:51
Avatar
vodacek
Tvůrce
Avatar
Odpovídá na Vojtěch Pospíchal
vodacek:29.12.2012 9:53

nemám 90 dolarů asi tak bych to řekl

 
Nahoru Odpovědět
29.12.2012 9:53
Avatar
Odpovídá na vodacek
Vojtěch Pospíchal:29.12.2012 10:16

Myslel jsem alespoň tu free trial. Vyzkoušel bych sám ale nemám tu zrovna nejrychlejší net.

 
Nahoru Odpovědět
29.12.2012 10:16
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Kit
Kit:29.12.2012 10:25

Tak jsem ještě chvíli v tuningu pokračoval, aby to bylo rychlé a hezké. Výsledek se dostal lehce pod 20 ns. Z celé třídy uvádím jen podstatnou část, která je stejně rychlá jako v C a přitom je objektová. Napsal jsem ji staticky, aby se dala vyhodnotit vzdálenost různých objektů, ale není to podstatné.

import java.lang.Math;

public class Vect {
    private double x,y;

    public static double diff(Vect a, Vect b) {
        double x=a.getX()-b.getX();
        double y=a.getY()-b.getY();
        return Math.sqrt(x*x+y*y);
    }
}

Celá třída je na http://www.itnetwork.cz/dev-lighter/50

Nahoru Odpovědět
29.12.2012 10:25
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
vodacek
Tvůrce
Avatar
Odpovídá na Vojtěch Pospíchal
vodacek:29.12.2012 10:25

potom nemám ani androida ani inakouslejabko systém, neboť mám univerzál s windows mobile 6.5 a jsem velmi spokojen, pokud zrovna nezlobí

 
Nahoru Odpovědět
29.12.2012 10:25
Avatar
Vojtěch Pospíchal:29.12.2012 10:38

Dobrá moment zkusím to vyzkoušet tak za hoďku dám vědět svoje první zkušenosti :D .

 
Nahoru Odpovědět
29.12.2012 10:38
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Kit
Kit:4.1.2013 23:50

Ještě jsem tu třídu zjednodušil. Vyházel jsem nepotřebné gettery a settery. Ponechal jsem jen to nejnutnější. Možná někomu připadne podivné, že Java umožňuje přímo sahat na privátní proměnné sourozenců, ale je to tak. Možná i proto se v Javě tolik getterů/setterů nepíše.

http://www.itnetwork.cz/dev-lighter/60

Nahoru Odpovědět
4.1.2013 23:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 22 zpráv z 122.