Co zpomaluje Javu? A co překlad do nativního kódu?

gll

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #30 kdy: 12. 11. 2016, 14:23:52 »
Vy zde stále uvádíte příklady softwaru napsaného v Javě, ke kterému neexistuje alternativní implementace. Jediná existující implementace bude logicky nejlepší.
Neexistuje k tomu alternativní implementace, protože každému soudnému člověku je jasné, že nedává smysl psát alternativní implementaci s pomocí nástroje, který je pro danou věc méně vhodný než současné řešení. Prostě jsou různé jazyky a platformy vhodné na různé věci. A když se to někde překrývá, je potřeba porovnávat to podle kritérií, která jsou důležitá pro tu danou úlohu.

Zrovna Javisté často reimplementují existující software v Javě.

Třeba Rhino a V8 https://axtaxt.wordpress.com/2011/09/25/benchmark-rhino-vs-chrome-v8-on-server-side/
PyPy a Jython https://pybenchmarks.org/u64q/benchmark.php?test=all&lang=pypy&lang2=jython&data=u64q


javaman ((

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #31 kdy: 12. 11. 2016, 14:31:02 »
Jen toho hloupého.

Jistě, protože takový by ti nebyl ochoten platit stovky tisíc za kecy.

Rychlost vývoje je v dnešní době klíčová. Zadání se neustále mění a je potřeba na ně pružně reagovat. Divím se, že ty to ze své nelopatovské pozice nevidíš. Nebo že by nebyla až tak vysoká, jak se prsíš?

Aneb běžná lopaťárna. Nevíme, co chceme, ale musí to být levné a hned. Najmeme pár lopat a budeme dřít. Přesčasy nevadí, protože vývoj je tvrdá práce jako práce v dole. Na přemýšlení není čas, protože by akorát zdržovalo od práce.

Já to právě vidím a denně musím vysvětlovat lopaťáckým manažerům, že jsou k ničemu a chtějí nesmysly. Pokud by nebyli hloupí, tak si to spočítají. Jenže oni vidí tak měsíc dopředu a pak už pro ně nic není. Tím se liší patlání od vývoje.

Kit

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #32 kdy: 12. 11. 2016, 14:39:24 »
Já to právě vidím a denně musím vysvětlovat lopaťáckým manažerům, že jsou k ničemu a chtějí nesmysly. Pokud by nebyli hloupí, tak si to spočítají. Jenže oni vidí tak měsíc dopředu a pak už pro ně nic není. Tím se liší patlání od vývoje.

Dovolí ti ten tvůj manažer psát testy?

javaman ((

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #33 kdy: 12. 11. 2016, 14:41:20 »
Já to právě vidím a denně musím vysvětlovat lopaťáckým manažerům, že jsou k ničemu a chtějí nesmysly. Pokud by nebyli hloupí, tak si to spočítají. Jenže oni vidí tak měsíc dopředu a pak už pro ně nic není. Tím se liší patlání od vývoje.

Dovolí ti ten tvůj manažer psát testy?

Se na něj můžu vysrat. Vývoj řídím já a on jen může souhlasit a nebo si najít někoho jiného. SW bez testů je zase lopaťárna. "My spíše vyvíjíme nové fíčury!" :D

kimec

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #34 kdy: 12. 11. 2016, 15:06:07 »
Zrovna Javisté často reimplementují existující software v Javě.
[...]
PyPy a Jython https://pybenchmarks.org/u64q/benchmark.php?test=all&lang=pypy&lang2=jython&data=u64q

Ehm, right... Nie ze by PyPy nezacal svoj zivot ako implementacia Pythonu v CPythone....

Psyco (2001)/PyPy(2007)
https://web.archive.org/web/20021205004539/http://psyco.sourceforge.net/index.html
vs
JPython (1997)/Jython(1999)
https://wiki.python.org/jython/JythonFaq/GeneralInfo


Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #35 kdy: 12. 11. 2016, 15:14:45 »
Zrovna Javisté často reimplementují existující software v Javě.
Protože z toho, že to bude implementované i v Javě, plynou nějaké výhody oproti existujícím implementacím. Některé implementace v Javě se zase reimplementují v C# nebo inspirují implementace napsané v JavaScriptu.

kimec

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #36 kdy: 12. 11. 2016, 15:16:57 »
Zrovna Javisté často reimplementují existující software v Javě.
V pohode, akurat, ze podla zdrojakov to vyzera, ze standardne Python moduly a struktury su v Jythonove napisane v ... Pythone?  :-\ Oops...
https://github.com/jythontools/jython/blob/master/lib-python/2.7/Queue.py


gll

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #37 kdy: 12. 11. 2016, 15:49:02 »
Zrovna Javisté často reimplementují existující software v Javě.
V pohode, akurat, ze podla zdrojakov to vyzera, ze standardne Python moduly a struktury su v Jythonove napisane v ... Pythone?  :-\ Oops...
https://github.com/jythontools/jython/blob/master/lib-python/2.7/Queue.py

No a co? Pokud ten modul použijete, tak se přeloží do java bytekódu. Provádění toho bytekódu je řádově pomalejší než pypy.

Queue.py je stejný ve všech implementacích.

https://github.com/python/cpython/blob/master/Lib/queue.py

https://github.com/aljosa/pypy/blob/master/lib-python/2.7/Queue.py

javaman ((

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #38 kdy: 12. 11. 2016, 15:59:37 »
Provádění toho bytekódu bude maximálně tak pomalé jako pypy, ale pravděpodobně daleko rychlejší.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #39 kdy: 12. 11. 2016, 17:22:30 »
K tomu prepisovani "lepsiho" softu do Javy, ona vyhoda bude, ze to potom spustite vsude, kde se spusti Java. Nejste zavisli na nejakych binarkach pro konkretni architekturu.

Treba v JavaScriptu je to podobne. Nektere baliky z npm si s sebou tahaji ruzne obludnosti v Ruby, Pythonu nebo C (klidne na vsech zaroven) a jsou s tim neustale problemy. Pokud to funguje, tak to muze byt rychlejsi, ale pokud to nefunguje, tak je to celkem peklo - dohledavani na cem vsem to zavisi, ze to nefunguje s touhle verzi Pythonu (2 vs 3) a ze se tomu musi manualne nekde predat cesta, ze se nekde nestahly predkompilovane binarky pro mou architekturu a OS, ze mi chybi nejaka knihovna. Proste tohle u cisteho JS reseni neni, tomu date "npm install" a konec. Vse je rychle stazene, nic se nemusi prekladat nebo dotahovat odjinud, funguje to vsude, kde jede nodejs.

Kit

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #40 kdy: 12. 11. 2016, 17:39:04 »
K tomu prepisovani "lepsiho" softu do Javy, ona vyhoda bude, ze to potom spustite vsude, kde se spusti Java. Nejste zavisli na nejakych binarkach pro konkretni architekturu.

Takových jazyků, které běží (skoro) všude je víc, Java je jen jedním z nich.

javaman ((

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #41 kdy: 12. 11. 2016, 17:47:26 »
Jen nejsou tak dobré. Plno skriptovacích věcí běží všude, ale kdo by chtěl dělat v jazycích na malé skriptíky. Plus jsou obvykle brutálně pomalé.

balki

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #42 kdy: 12. 11. 2016, 17:55:03 »
Jen nejsou tak dobré. Plno skriptovacích věcí běží všude, ale kdo by chtěl dělat v jazycích na malé skriptíky. Plus jsou obvykle brutálně pomalé.

Java je ale z takych jazykov najrychlejsia.

Radek Miček

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #43 kdy: 12. 11. 2016, 18:20:58 »
Pokud to funguje, tak to muze byt rychlejsi, ale pokud to nefunguje, tak je to celkem peklo - dohledavani na cem vsem to zavisi, ze to nefunguje s touhle verzi Pythonu (2 vs 3) a ze se tomu musi manualne nekde predat cesta, ze se nekde nestahly predkompilovane binarky pro mou architekturu a OS, ze mi chybi nejaka knihovna.

Tohle se děje i nad JVM - různé problémy s classpath nebo JARy, jenž obsahují nativní knihovny, které fungují pouze pro pár platforem.

karl82

Re:Co zpomaluje Javu? A co preklad do nativniho kodu?
« Odpověď #44 kdy: 12. 11. 2016, 20:02:05 »
Java je pomala dokedy neprebehne ~20 000 iteracii toho isteho kodu a ona to neprelozi do nativneho kodu. Sama, bez tvojej asistencie. Predtym to zdrzuje analyza - co sa vola, ako casto sa to vola a co s tym. Potom je to bez alokacii / GC na urovni C++ kodu minus par percent na beh GC. O tom sa presvedcis v jednoduchom benchmarku.

Pisat aplikaciu s manualnym uvolnovanim zdrojov ako v C++ priamo nejde. Mozes do objektov priradzovat null, takze sa ti niekam nezatula referencia, ktora by drzala alokovane zdroje. Mozes znovupouzivat objekty. To je design anti-pattern, ale usetris na behu GC a doba behu bude stabilna napriec iteraciami.

<snip>

zalezi co je pouzity za JIT. C2 ma hranici pro hot metody 10k by default, C1 5k. u tiered jsou to jednoduchy optimalizace a postupne prechazej v C2.

znovupouzivat objekty: idealne direct ByteBuffer.