Εκτέλεση εφαρμογών Java vs C - εξηγεί ο Gary

Συγγραφέας: John Stephens
Ημερομηνία Δημιουργίας: 23 Ιανουάριος 2021
Ημερομηνία Ενημέρωσης: 1 Ιούλιος 2024
Anonim
Εκτέλεση εφαρμογών Java vs C - εξηγεί ο Gary - Εφαρμογές
Εκτέλεση εφαρμογών Java vs C - εξηγεί ο Gary - Εφαρμογές

Περιεχόμενο


Ξεκινώντας με το χειρότερο σκορ, το 32-bit Android 5.0, δείχνει ότι ο κώδικας Java έτρεξε 296% πιο αργός από το C, ή με άλλα λόγια 4 φορές πιο αργός. Και πάλι, να θυμάστε ότι η απόλυτη ταχύτητα δεν είναι σημαντική εδώ, αλλά η διαφορά στο χρόνο που απαιτείται για την εκτέλεση του κώδικα Java σε σύγκριση με τον κώδικα C στην ίδια συσκευή. Το 32-bit Android 4.4 KitKat με το Dalvik JVM είναι λίγο ταχύτερο στο 237%. Μόλις το άλμα γίνει στο Android 6.0 Marshmallow τα πράγματα αρχίζουν να βελτιώνονται δραματικά, με το 64-bit Android 6.0 να αποδίδει τη μικρότερη διαφορά μεταξύ Java και C.

Η δεύτερη δοκιμή είναι η δοκιμή πρωτεύοντος αριθμού, χρησιμοποιώντας δοκιμή με διαίρεση. Όπως σημειώθηκε παραπάνω, αυτός ο κώδικας χρησιμοποιεί 64-bitμακρύς ακέραιους αριθμούς και συνεπώς θα ευνοούν επεξεργαστές 64 bit.

Όπως αναμενόταν, τα καλύτερα αποτελέσματα προέρχονται από το Android που τρέχει σε επεξεργαστές 64 bit. Για το Android 6.0 64 bit, η διαφορά ταχύτητας είναι πολύ μικρή, μόλις 3%. Ενώ για το 64-bit Android 5.0 είναι 38%. Αυτό δείχνει τις βελτιώσεις μεταξύ ART στο Android 5.0 και το Βελτιστοποίηση compiler που χρησιμοποιείται από την ART στο Android 6.0. Δεδομένου ότι το Android 7.0 N εξακολουθεί να είναι αναπτυξιακό beta, δεν έχω δείξει τα αποτελέσματα, αλλά γενικά εκτελεί και Android 6.0 M, αν όχι καλύτερα. Τα χειρότερα αποτελέσματα αφορούν τις 32-bit εκδόσεις του Android και το περίεργο 32-bit Android 6.0 αποδίδουν τα χειρότερα αποτελέσματα της ομάδας.


Η τρίτη και τελική δοκιμή εκτελεί μια βαριά μαθηματική λειτουργία για ένα εκατομμύριο επαναλήψεις. Η συνάρτηση έχει αριθμητική ακέραιη καθώς και αριθμητική μεταβλητού σημείου.

Και εδώ για πρώτη φορά έχουμε ένα αποτέλεσμα όπου η Java τρέχει πιο γρήγορα από το C! Υπάρχουν δύο πιθανές εξηγήσεις γι 'αυτό και και οι δύο αφορούν την βελτιστοποίηση και το Oβελτιστοποίησημεταγλωττιστή από το ARM. Πρώτον, το Οβελτιστοποίηση ο μεταγλωττιστής θα μπορούσε να έχει δημιουργήσει έναν περισσότερο βέλτιστο κώδικα για το AArch64, με καλύτερη κατανομή κτλ., από τον μεταγλωττιστή C στο Android Studio. Ένας καλύτερος μεταγλωττιστής σημαίνει πάντα καλύτερη απόδοση. Επίσης, θα μπορούσε να υπάρχει μια διαδρομή μέσω του κώδικα που το Oβελτιστοποίησηο υπολογιστής έχει υπολογίσει μπορεί να βελτιστοποιηθεί μακριά επειδή δεν έχει καμία επίδραση στο τελικό αποτέλεσμα, αλλά ο μεταγλωττιστής C δεν έχει εντοπίσει αυτή τη βελτιστοποίηση. Ξέρω ότι αυτό το είδος βελτιστοποίησης ήταν ένα από τα μεγάλα ενδιαφέροντα για το Oβελτιστοποίησηcompiler στο Android 6.0. Δεδομένου ότι η λειτουργία είναι απλώς μια καθαρή εφεύρεση από την πλευρά μου, θα μπορούσε να υπάρξει ένας τρόπος για τη βελτιστοποίηση του κώδικα που παραλείπει ορισμένα τμήματα, αλλά δεν το έχω εντοπίσει.Ο άλλος λόγος είναι ότι η κλήση αυτής της λειτουργίας, ακόμη και ένα εκατομμύριο φορές, δεν προκαλεί τη λειτουργία του συλλέκτη απορριμμάτων.


Όπως και με τη δοκιμή primes, αυτή η δοκιμή χρησιμοποιεί 64-bitμακρύς ακεραίων, γι 'αυτό και η επόμενη καλύτερη βαθμολογία προέρχεται από την έκδοση 64-bit Android 5.0. Στη συνέχεια έρχεται το Android 6.0 με 32-bit, ακολουθούμενη από το 32-bit Android 5.0, και τέλος το Android 4.4 με 32 bit.

Τύλιξε

Συνολικά το C είναι ταχύτερο από την Java, ωστόσο το χάσμα μεταξύ των δύο έχει μειωθεί δραστικά με την έκδοση 64-bit Android 6.0 Marshmallow. Φυσικά στον πραγματικό κόσμο, η απόφαση χρήσης Java ή C δεν είναι ασπρόμαυρη. Ενώ το C έχει κάποια πλεονεκτήματα, όλα τα UI Android, όλες οι υπηρεσίες Android και όλα τα API Android έχουν σχεδιαστεί για να καλούνται από την Java. C μπορεί πραγματικά να χρησιμοποιηθεί μόνο όταν θέλετε ένα κενό καμβά OpenGL και θέλετε να σχεδιάσετε σε αυτόν τον καμβά χωρίς να χρησιμοποιήσετε κανένα Android API.

Ωστόσο, αν η εφαρμογή σας έχει κάποια βαριά ανύψωση να κάνει, τότε αυτά τα μέρη θα μπορούσαν να μεταφερθούν στο C και ίσως να δείτε μια βελτίωση ταχύτητας, όμως όχι τόσο όσο θα μπορούσατε να έχετε δει.

Το τηλέφωνο παιχνιδιών Black hark 2 καταργεί την υποδοχή ακουστικών, αλλά τα Black hark αναφέρει ότι τα μελλοντικά προϊόντα θα το συμπεριλάβουν.Το έξυπνο τηλέφωνο Black hark 2 είναι μια οικονομικά πρ...

Τι συνδέουν τα τηλέφωνά τους για να ακούν μουσική, podcat ή οτιδήποτε άλλο; Φορητά ηχεία, ίσως αυτοκίνητο, σύστημα οικιακού κινηματογράφου ή ψυχαγωγίας, και, ναι, ακουστικά....

Η Επιλογή Μας