Vyhýbám se Javě a všemu v ní napsaném velkým obloukem, takže prakticky nenarážím na omezení rychlosti výkonem ani na 5 let starém HW kromě jedné jediné specifické oblasti a to jsou hry. Tu bohužel tento test z celkem pochopitelných důvodů prakticky ignoruje.
BTW Microsoft má vlastíky MACů rád. Jsou to nejvýznamnější zákazníci pro krabicové verze W10. Neznám ve svém okolí nikoho s MACem, kdo by tam ty Widle v nějaké virtualizaci neměl.
Kedy ste robili nieco s Javou. Tu je overhead pri spustani:
630:XXX@YYY:/tmp$ cat Test.java
class Test {
public static void main(String[] arg) {
System.out.println("Tu som");
}
}
632:XXX@YYY:/tmp$ time java Test
Tu som
real 0m0.064s
user 0m0.055s
sys 0m0.013s
A samotny JIT prekladac dokaze z kodu urobit skoro native C++, niekedy viac niekedy menej zalezi od problemu.
To je úplně skvělé, program v Javě vypsal Hello World jen za 64 tisíciny sekundy! Ta Java ale musí být rychlá. Honem to všichni používejme...
...akorát, že to je "strašně moc vypovídající", když:
1. Je to tak krátká věc
2. Neznáme HW, na kterém to běží
3. Není na tom samém HW spuštěno nic pro porovnání
Takže pro srovnání ten overhead na PC co mám teď pro ruce:
Java:
$ time java Test
Tu som
real 0m0,089s
user 0m0,094s
sys 0m0,012s
Python:
$ time python helloworld.py
Tu som
real 0m0,032s
user 0m0,023s
sys 0m0,008s
C++:
time ./helloworldcc
Hello, World!
real 0m0,003s
user 0m0,003s
sys 0m0,000s
C:
$ time ./helloworld
Tu som
real 0m0,001s
user 0m0,000s
sys 0m0,001s
Takže Java je "jen" cca 3× pomalejší než Python, 30× pomalejší než než C++ a 90× pomalejší než C.
Bežte už s takovým nic neříkajícím testováním do háje...
A ako casto potrebujete spustat programy vy aby to bolo OK? Tych 94ms je nejaky problem pre vase pouzitie? Pre mna to teda problem nie je lebo vacsinou sa jedna o samostatne SW kde sa cas mina uplne ine veci nez nejake spustenie a prave ten JIT z toho urobi tu rychlost ktora sa s pythonom neda ani porovnat.
Tych 94ms je nejaky problem pre vase pouzitie?
Vidím, že nechápete pointu. Nejde o těch 94 ms, ale o tu lež, že Java běží (téměř) stejně rychle jako C++ a že overhead u jejího spuštění nestojí za řeč. Navíc spouštěcí overhead u většího programu bude výrazně vyšší
- znají všichni, kdo něco v Javě spouštějí, alternativní programy v C/C++, ale i třeba interpretované věci např. v Pythonu, Lua ap. - je to úplně někde jinde (samozřejmě tím neříkám, že Java nemá své místo a možnost využití tam, kde to má smysl a zdůvodnění). Dále jsem se tímto chtěl ohradit proti tomu manupulačnímu argumentačnímu faulu, kdy jste hodil zdánlivě mrňavá čísla bez další souvislosti k tomu co s tím porovnáváte, protože čísla k tomu druhému jste nedodal. A taky jsem chtěl ukázat na to, že když chci, lehce to jiným testem na základu toho vašeho úplně otočím. A nakonec jsem chtěl upozornit na to, že tyhle hrátky mají houby vypovídací hodnotu, ať už vaše (které ale byly zároveň falešnou hrou), tak i moje (kdy já ale alespoň dodal relevantní data k porovnání).
Nedaval som tam porovnanie preto 94ms pre spustenie aplikacie nemoze byt problem pretoze ci je 3ms alebo 94 je uplne jedno.
Ano Java bezi rovnako rychlo ako C++ kod, ak bude ten C++ kod obsahovat rovnake funkie ako ten Javovy bude rovnako pomaly/rychly. A porovnavat interpretaciu Pythonu s JIT v Jave zjavne ani netusite o com hovorite.
Ano Java bezi rovnako rychlo ako C++ kod
Tak jasně https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/java-gpp.html
Už s tím vážně přestaňte...