Výkon aplikací Java vs C - vysvětluje Gary

Autor: John Stephens
Datum Vytvoření: 23 Leden 2021
Datum Aktualizace: 1 Červenec 2024
Anonim
Výkon aplikací Java vs C - vysvětluje Gary - Aplikace
Výkon aplikací Java vs C - vysvětluje Gary - Aplikace

Obsah


Počínaje nejhorším skóre, 32bitový Android 5.0, ukazuje, že kód Java běžel o 296% pomaleji než C, jinými slovy čtyřikrát pomaleji. Nezapomeňte, že absolutní rychlost zde není důležitá, ale spíše rozdíl v době potřebné ke spuštění kódu Java ve srovnání s kódem C na stejném zařízení. 32bitový Android 4.4 KitKat s jeho Dalvik JVM je o něco rychlejší při 237%. Jakmile je proveden skok na Android 6.0 Marshmallow se věci začnou dramaticky zlepšovat, přičemž 64bitový Android 6.0 přináší nejmenší rozdíl mezi Java a C.

Druhým testem je test prvočísel, který používá zkušební rozdělení. Jak je uvedeno výše, tento kód používá 64-bitdlouho celá čísla, a proto budou upřednostňovat 64bitové procesory.


Podle očekávání nejlepší výsledky pocházejí z Androidu, který běží na 64bitových procesorech. U 64bitového systému Android 6.0 je rozdíl rychlosti velmi malý, pouze 3%. Zatímco u 64bitového systému Android 5.0 je to 38%. To demonstruje vylepšení mezi ART na Android 5.0 a Optimalizace kompilátor používaný společností ART v systému Android 6.0. Vzhledem k tomu, že Android 7.0 N je stále vývojovou beta verzí, výsledky jsem neuvedl, ale obvykle funguje stejně dobře jako Android 6.0 M, ne-li lepší. Nejhorší výsledky jsou pro 32bitové verze Androidu a podivně 32bitová verze Android 6.0 přináší nejhorší výsledky skupiny.

Třetí a závěrečný test provádí těžkou matematickou funkci pro milion iterací. Funkce provede aritmetiku celočíselného i desetinného bodu.


A tady poprvé máme výsledek, kdy Java skutečně běží rychleji než C! K tomu existují dvě možná vysvětlení a obě se týkají optimalizace a Ozaváděníkompilátor od ARM. Nejprve Ozavádění kompilátor mohl vyrobit optimálnější kód pro AArch64, s lepší alokací registrů atd., než kompilátor C v Android Studio. Lepší překladač vždy znamená lepší výkon. Také by mohla existovat cesta skrz kód, který Ozaváděnívypočítaný kompilátor lze optimalizovat, protože nemá žádný vliv na konečný výsledek, ale kompilátor C tuto optimalizaci nezjistil. Vím, že tento druh optimalizace byl jedním z hlavních cílů Ozaváděníkompilátor v systému Android 6.0. Protože funkce je z mé strany jen čistým vynálezem, mohl by existovat způsob, jak optimalizovat kód, který vynechává některé oddíly, ale nevšiml jsem si ho.Dalším důvodem je to, že volání této funkce, a to i miliónkrát, nezpůsobí spuštění sběratele odpadu.

Stejně jako u testu primerů, i tento test používá 64bitovédlouho celá čísla, proto příští nejlepší skóre pochází ze 64bitového systému Android 5.0. Poté přichází 32bitová verze Android 6.0, následovaná 32bitovou verzí Android 5.0 a nakonec 32bitová verze Android 4.4.

Zabalit

Celkově je C rychlejší než Java, ale propustnost 64bitového systému Android 6.0 Marshmallow byla výrazně snížena. Ve skutečném světě samozřejmě není rozhodnutí používat Java nebo C černobílé. Zatímco C má některé výhody, všechny uživatelské rozhraní Android, všechny služby Android a všechna rozhraní API pro Android jsou navrženy pro volání z Java. C lze opravdu použít pouze v případě, že chcete prázdné plátno OpenGL a chcete kreslit na toto plátno bez použití Android API.

Pokud však má vaše aplikace nějaké těžké zvedání, pak by tyto části mohly být přeneseny na C a možná byste viděli zlepšení rychlosti, ne však tolik, jak jste kdy mohli vidět.

Aktualizace, 29. ledna v 8:41 hod. ET: Krátce poté, co byl kód v pátek crackován, generální ředitel polečnoti Google undar Pichai v Tweetu potvrdil, že data jou pr&#...

Proběhne od 7. května do 9. května Google I / O 2019 za méně než dva týdny. cílem pomoci účatníkům i divákům připravit e na vývojovou konferenci, vyhledávac...

Čerstvé Příspěvky