Rendiment de l'aplicació Java vs C - explica Gary

Autora: John Stephens
Data De La Creació: 23 Gener 2021
Data D’Actualització: 1 Juliol 2024
Anonim
Rendiment de l'aplicació Java vs C - explica Gary - Aplicacions
Rendiment de l'aplicació Java vs C - explica Gary - Aplicacions

Content


Començant per la pitjor puntuació, Android 5.0 de 32 bits, demostra que el codi Java tenia un 296% més lent que C, o en altres paraules 4 vegades més lent. Un cop més, recordeu que la velocitat absoluta no és important aquí, sinó la diferència en el temps que es necessita per executar el codi Java en comparació amb el codi C del mateix dispositiu. L’Android 4.4 KitKat de 32 bits amb la seva Dalvik JVM és una mica més ràpid al 237%. Una vegada realitzat el salt a Android 6.0 Marshmallow, les coses comencen a millorar notablement, l'Android 6.0 de 64 bits produint la menor diferència entre Java i C.

La segona prova és la prova del nombre primer, que es fa servir prova per divisió. Com s'ha indicat anteriorment, aquest codi utilitza 64 bitsllarg sencers i per tant afavorirà els processadors de 64 bits.


Com era d'esperar, els millors resultats provenen d'Android que funciona amb processadors de 64 bits. Per a Android 6.0 de 64 bits la diferència de velocitat és molt petita, només un 3%. Mentre que per a Android 5.0 de 64 bits és del 38%. Això demostra les millores entre ART a Android 5.0 i Optimització compilador utilitzat per ART a Android 6.0. Com que Android 7.0 N continua sent una beta de desenvolupament, no he mostrat els resultats, tot i que generalment funciona amb Android 6.0 M, si no és millor. Els pitjors resultats són per a les versions d'Android de 32 bits i, per descomptat, Android 6.0 de 32-bit produeixen els pitjors resultats del grup.

La tercera i última prova executa una pesada funció matemàtica per a un milió de iteracions. La funció fa aritmètica sencera i aritmètica en punt flotant.


I aquí per primera vegada tenim un resultat on Java realment corre més ràpid que C! Hi ha dues possibles explicacions per a això i ambdues coses tenen a veure amb l’optimització i l’Optimitzantcompilador de ARM. Primer, la Optimitzant el compilador podria haver produït un codi més òptim per a AArch64, amb una millor assignació de registre, etc., que el compilador C a Android Studio. Un millor compilador sempre significa un millor rendiment. També hi podria haver un camí a través del codi que el Optimitzantel compilador ha calculat que es pot optimitzar lluny, ja que no té influència en el resultat final, però el compilador C no ha detectat aquesta optimització. Sé que aquest tipus d’optimització va ser un dels grans focus d’Optimitzantcompilador a Android 6.0. Com que la funció és només una invenció pura, hi podria haver una manera d’optimitzar el codi que omet algunes seccions, però no l’he detectat.L’altra raó és que anomenar aquesta funció, fins i tot un milió de vegades, no fa que el col·lector d’escombraries es faci funcionar.

Com en el cas de la prova primes, aquesta prova utilitza 64 bitsllarg sencers, és per això que la següent millor puntuació prové d’Android 5.0 de 64 bits. Després ve Android 6.0 de 32 bits, seguit d’Android 5.0 de 32 bits, i finalment Android 4.4 de 32 bits.

Embolicar

En general, C és més ràpid que Java, però el desfasament entre els dos s'ha reduït dràsticament amb l'alliberament d'Android 6.0 Marshmallow de 64 bits. Per descomptat, en el món real, la decisió d'utilitzar Java o C no és en blanc i negre. Si bé C té alguns avantatges, totes les interfícies d'interès Android, tots els serveis d'Android i totes les API d'Android estan dissenyades per ser anomenades des de Java. C només es pot utilitzar quan voleu un llenç en blanc OpenGL i voleu dibuixar-lo sense utilitzar cap API d'Android.

Tanmateix, si l’aplicació té alguns efectes elevats per fer, aleshores es poden portar a C i podríeu veure una millora de la velocitat, però no tant com ho hagueu vist.

Actualització (14 de novembre de 2018, 14:22 ET):Google età publicant oficialment una actualització de càmera que inclou Night ight a tot el telèfon Pixel....

El Google Pixel 3 i el Pixel 3 XL ja admeten un nombre robut de bande LTE. Aquet número augmentarà aviat per un, gràcie a una actualització de programari que introduirà el upo...

Interessant