ART εναντίον Dalvik, αναλυτικά benchmarks και δοκιμές

Android Development ART vs Dalvik

Μία από τις σημαντικότερες αλλαγές της Google στο Android 4.4 KitKat ήταν η ενσωμάτωση του "ART" ως πειραματικό Runtime Compiler, με βλέψη να αντικαταστήσει πλήρως στο μέλλον την Dalvik-VM που μέχρι τώρα χρησιμοποιούσε.

Το νέο Runtime υπόσχεται να κάνει το Android ακόμα πιο γρήγορο. Κατά πόσον τα καταφέρνει θα το δούμε παρακάτω.

Μεθοδολογία δοκιμών ART και Dalvik

Για τις δοκιμές μας χρησιμοποιήσαμε ως πειραματόζωο ένα Nexus 4 με Android 4.4.2, το οποίο έτρεχε την εργοστασιακή ROM χωρίς Root. Τρέξαμε πολλών ειδών Benchmarks χρησιμοποιώντας αρχικά ART και στην συνέχεια Dalvik.

Το Configuration της συσκευής ήταν ολόιδιο, έχοντας ακριβώς τις ίδιες εγκατεστημένες εφαρμογές και στις δύο περιπτώσεις. Κάθε Benchmark το τρέξαμε πολλές φορές, αφήνοντας χρονικό περιθώριο ανάμεσα στα tests για να αποφύγουμε throttling του επεξεργαστή.

Επίσης προσπαθήσαμε να κρατήσουμε "ίδιες" και άλλες συνθήκες που θα μπορούσαν να επηρεάσουν τα αποτελέσματα, όπως θερμοκρασία περιβάλλοντος (!).

Στα Screenshots παρουσιάζονται τα σκορ με την μεγαλύτερη συχνότητα εμφάνισης και στις δύο περιπτώσεις, αριστερά του ART, δεξιά του Dalvik.

Antutu σε ART και Dalvik (σημειώσατε Χ)

Χωρίς φανερό νικητή στο Antutu, και τα δύο Runtimes αποσπούσαν αντίστοιχα σκορ.

Είχαμε επιλεγμένο το "Optimize memory to make benchmark more accurate".

  • antutu-art-1
  • antutu-art-2
  • antutu-dalvik-1
  • antutu-dalvik-2

Quadrant σε ART και Dalvik (σημειώσατε 1)

Σαφής νικητής στο Quadrant το ART, όπου χρησιμοποιώντας το νέο Runtime είχαμε συνολικά σκορ της τάξης των 6900 βαθμών, ενώ στην περίπτωση του Dalvik τα σκορ που παίρναμε ήταν της τάξης των 5100 βαθμών.

Κοιτώντας αναλυτικότερα πώς βγήκαν αυτές οι βαθμολογίες, παρατηρούμε ότι το ART σχεδόν διπλασίασε το σκορ στα CPU Operations, από 11600 σε 22000.

  • quadrant-art
  • quadrant-dalvik

CPU Identifier σε ART και Dalvik (σημειώσατε 1)

Η εφαρμογή CPU Identifier διαθέτει ένα "Evaluation Mode" το οποίο δοκιμάζει και αξιολογεί τις δυνατότητες του επεξεργαστή της συσκευής μας. Χρησιμοποιώντας το ART έφτασε τους 30.000 βαθμούς, από τους 21000 με την dalvik-vm.

  • cpu-identifier-art
  • cpu-identifier-dalvik

SciMark σε ART και Dalvik (σημειώσατε 1, με γκολ στο 90)

Το SciMark διαθέτει 2 modes, προσπαθώντας να καλύψει και τις εφαρμογές που είναι γραμμένες με το NDK της Google σε C (οι οποίες συγκριτικά είναι ελάχιστες), και όχι σε Java. Όπως αναμενόμενο στο Java Bench είχαμε μία μικρή διαφορά υπέρ του ART, ενώ (προφανώς) δεν υπάρχει διαφορά στο C Bench, το οποίο (προφανώς) δεν επηρεάζεται από το Runtime.

  • scimark-art-1
  • scimark-art-2
  • scimark-dalvik-1
  • scimark-dalvik-2

CPU Prime σε ART και Dalvik (σημειώσατε 1)

Το CPU Prime με την χρήση της Dalvik VM έδινε σκορ περίπου ~2900, το οποίο "αυξήθηκε" σε 4300 στο ART. Προφανώς το συγκεκριμένο Bench δίνει ιδιαίτερη βάση στα CPU Operations, γι' αυτό και υπάρχει σαφής βελτίωση.

  • cpu-prime-art
  • cpu-prime-dalvik

SQLite Benchmark σε ART και Dalvik (σημειώσατε 1, με υποψία "παράγκας")

Το συγκεκριμένο Bench δοκιμάζει διάφορα Queries σε βάση δεδομένων SQLite, προσπαθώντας να μιμηθεί την συγκεκριμένη λειτουργία πολλών εφαρμογών. Αν και ο χρόνος που τελείωνε το Bench στο ART ήταν πάντα μικρότερος (της τάξης των 17,7 δευτερολέπτων), είχε πάντα μικρή διαφορά σε σχέση με τον χρόνο που έκανε τρέχοντας σε Dalvik-VM (~20 δευτερόλεπτα).

Βγάλαμε νικητή και εδώ το ART, παρ' όλα αυτά θελήσαμε να τρέξουμε και άλλες εφαρμογές που μιμούνται Queries σε SQLite για να δούμε αν όντως υπήρχε διαφορά, ή αν έπαιξε ρόλο η "παράγκα".

  • sqlite-art
  • sqlite-dalvik

RL Benchmark: SQLite σε ART και Dalvik (σημειώσατε 1, με υποψία "παράγκας")

Και εδώ τα αποτελέσματα ήταν με μικρή διαφορά υπέρ του ART (29,7 δευτερόλεπτα έναντι 31,2 δευτερόλεπτα), αλλά και πάλι είμαστε εντός στατιστικού λάθους.

  • rl-bench-sqlite-art
  • rl-bench-sqlite-dalvik

CPU Mark σε ART και Dalvik (σημειώσατε 1, με υποψία "παράγκας")

Το CPU Mark έδειξε και αυτό μία μικρή διαφορά υπέρ του ART. Πάλι μπορεί να είμαστε εντός στατιστικού λάθους.

  • cpu-mark-art
  • cpu-mark-dalvik

Antutu 3D Rating σε ART και Dalvik (σημειώσατε X)

Το Antutu 3D Rating χρησιμοποιεί το NDK, άρα δεν περιμέναμε να δούμε διαφορά από Dalvik σε ART, το οποίο και επαληθεύτηκε.

  • antutu-3d-rating-art
  • antutu-3d-rating-dalvik

GPU Bench σε ART και Dalvik (σημειώσατε X)

Αντίστοιχα ήθελα να δώσω και ένα παράδειγμα χρήσης του Unity, το οποίο χρησιμοποιεί και αυτό το NDK, άρα δεν βλέπουμε διαφορά μεταξύ ART και Dalvik.

  • gpubench-art
  • gpubench-dalvik

3DMark σε ART και Dalvik(σημειώσατε X)

Στο 3D Mark τρέξαμε και το Ice Storm Extreme και το Ice Storm Unlimited, με τον αγώνα να βγαίνει ισόπαλος.

  • 3d-mark-1
  • 3d-mark-2
  • 3d-mark-3
  • 3d-mark-4

BenchmarkPi σε ART και Dalvik (σημειώσατε 1)

Θεωρήσαμε λογικό να αφήσουμε λίγο στην άκρη τα 3D Benchmarks, τα οποία έτσι κι αλλιώς προσπαθούν να μετρήσουν την ικανότητα της GPU και όχι τόσο της CPU. Το πιο "βασικό" Benchmark που υπάρχει περιλαμβάνει τον υπολογισμό των πρώτων χιλιάδων ψηφίων του "π".

Με την χρήση του ART ο χρόνος ολοκλήρωσης της διαδικασίας ήταν ο μισός (!) απ' ότι με την Dalvik. Παρ' όλα αυτά καθότι ο χρόνος υπολογισμού ήταν σε ms, θεωρήσαμε λογικό να δοκιμάσουμε και κάποια άλλη εφαρμογή που να βρίσκει τα ψηφία του π, στην οποία θα μπορούμε να ορίσουμε πόσες δεκάδες χιλιάδες από αυτά να υπολογίσει.

  • benchmark-pi-art
  • benchmark-pi-dalvik

Pi Benchmark σε ART και Dalvik (σημειώσατε 1)

Επιλέγοντας τον υπολογισμό των πρώτων 100.000 ψηφίων του π, είδαμε ότι και εδώ επαληθεύτηκε η τεράστια διαφορά υπέρ του ART, το οποίο πάλι έκανε σχεδόν "τον μισό χρόνο" από ότι η Dalvik.

  • pi-benchmark-art
  • pi-benchmark-dalvik

Συμπεράσματα ART vs Dalvik

Η Google έκανε ένα ακόμα σημαντικότατο βήμα με την εισαγωγή του ART στο Android 4.4 για την βελτίωση του Android. Πολλοί θεωρούν ότι στην επόμενη έκδοση του Android (Android 4.5?) ότι το ART θα είναι το Default, με την Dalvik-VM να παίρνει πόδι.

Είδαμε ότι υπάρχει σαφής βελτίωση σε πολλά CPU-Intensive operations, το οποίο συνεπάγεται γρηγορότερη εκτέλεση εφαρμογών. Και είναι λογικό το AOT (Ahead of Time) Compilation του ART να υπερτερεί του JIT (Just in Time Compilation) της Dalvik όσον αφορά την ταχύτητα εκτέλεσης.

Επίσης το ART εν δυνάμει βελτιώνει και την αυτονομία της συσκευής μας, αν και αυτό μένει να το "αποδείξουμε" σε μελλοντικό άρθρο.

  • select-runtime-art-or-dalvik-1
  • select-runtime-art-or-dalvik-2

aByte