Wydajność aplikacji Java vs C. - wyjaśnia Gary

Autor: John Stephens
Data Utworzenia: 23 Styczeń 2021
Data Aktualizacji: 29 Czerwiec 2024
Anonim
Wro.cpp #21
Wideo: Wro.cpp #21

Zawartość


Począwszy od najgorszego wyniku, 32-bitowy system Android 5.0 pokazuje, że kod Java działał 296% wolniej niż C, czyli innymi słowy 4 razy wolniej. Ponownie pamiętaj, że prędkość bezwzględna nie jest tutaj ważna, ale różnica w czasie potrzebnym do uruchomienia kodu Java w porównaniu z kodem C na tym samym urządzeniu. 32-bitowy Android 4.4 KitKat z Dalvik JVM jest nieco szybszy i wynosi 237%. Po przejściu na system Android 6.0 Marshmallow wszystko zaczyna się dramatycznie poprawiać, a 64-bitowy system Android 6.0 zapewnia najmniejszą różnicę między Javą a C.

Drugim testem jest test na liczbę pierwszą, przy użyciu próby według podziału. Jak wspomniano powyżej, ten kod używa 64-bitówdługie liczby całkowite i dlatego będą faworyzować procesory 64-bitowe.

Zgodnie z oczekiwaniami najlepsze wyniki pochodzą z systemu Android działającego na procesorach 64-bitowych. W 64-bitowym systemie Android 6.0 różnica prędkości jest bardzo mała, zaledwie 3%. Podczas gdy w 64-bitowym systemie Android 5.0 jest to 38%. To pokazuje ulepszenia między ART na Androida 5.0 i Optymalizacja kompilator używany przez ART w Androidzie 6.0. Ponieważ Android 7.0 N jest wciąż wersją beta dla programistów, nie pokazałem wyników, jednak ogólnie działa tak dobrze, jak Android 6.0 M, jeśli nie lepiej. Najgorsze wyniki dotyczą 32-bitowych wersji Androida, a dziwnie 32-bitowy Android 6.0 daje najgorsze wyniki w grupie.


Trzeci i ostatni test wykonuje ciężką funkcję matematyczną przez milion iteracji. Funkcja wykonuje arytmetykę liczb całkowitych, a także arytmetykę zmiennoprzecinkową.

I tutaj po raz pierwszy mamy wynik, w którym Java faktycznie działa szybciej niż C! Istnieją dwa możliwe wyjaśnienia tego i oba dotyczą optymalizacji i Optimizingkompilator z ARM. Po pierwsze, Optimizing kompilator mógł wygenerować bardziej optymalny kod dla AArch64, z lepszym przydziałem rejestrów itp., niż kompilator C w Android Studio. Lepszy kompilator zawsze oznacza lepszą wydajność. Również może istnieć ścieżka przez kod, który Optimizingobliczony kompilator można zoptymalizować, ponieważ nie ma on wpływu na końcowy wynik, ale kompilator C nie zauważył tej optymalizacji. Wiem, że tego rodzaju optymalizacja była jednym z głównych celów O.ptimizingkompilator w systemie Android 6.0. Ponieważ ta funkcja jest po prostu czystym wynalazkiem z mojej strony, może istnieć sposób na zoptymalizowanie kodu, który pomija niektóre sekcje, ale go nie zauważyłem.Innym powodem jest to, że wywołanie tej funkcji, nawet milion razy, nie powoduje uruchomienia śmieciarza.


Podobnie jak w przypadku testu liczb pierwszych, ten test używa 64-bitówdługie liczby całkowite, dlatego kolejny najlepszy wynik pochodzi z 64-bitowego Androida 5.0. Potem jest 32-bitowy system Android 6.0, następnie 32-bitowy system Android 5.0, a na końcu 32-bitowy system Android 4.4.

Zakończyć

Ogólnie C jest szybszy niż Java, jednak różnica między nimi została drastycznie zmniejszona dzięki wydaniu 64-bitowego systemu Android 6.0 Marshmallow. Oczywiście w prawdziwym świecie decyzja o użyciu Java lub C nie jest czarno-biała. Chociaż C ma pewne zalety, cały interfejs użytkownika Androida, wszystkie usługi Android i wszystkie interfejsy API Androida są zaprojektowane do wywoływania z Java. C można naprawdę używać tylko wtedy, gdy chcesz mieć puste płótno OpenGL i chcesz rysować na nim bez użycia interfejsów API Androida.

Jeśli jednak twoja aplikacja wymaga ciężkiego podnoszenia, te części mogą być przeniesione do C i możesz zauważyć poprawę prędkości, jednak nie tak bardzo, jak kiedyś.

Jeśli maz przyjaciela, który jet kierownikiem projektu, możez być ciekawy co tak naprawdę robią cały dzień. Może po protu ię zatanawiaz dlaczego tak dużo zarabiają za robienie tego....

AA Pick wkracza dziś na cenę ze świetną ofertą na dron Force1 U49WF. Ten dron z Kamera HD 720p obniżono jego cenę ze 150 UD do zaledwie 89 UD w tym tygodniu....

Wybór Redaktorów