Dalvik vs ART

DomieMic65

Supreme Member
10 July 2006
9,692
Αθήνα
Τι ακριβώς κάνουν/είναι μην με ρωτήσετε.

Επιλέγεις μεταξύ των δύο από:
"Επιλογές για προγραμματιστές"-"επιλογή χρόνου εκτέλεσης".
Ξέρω πως ο ART (Android Run Time) είναι σε εξέλιξη ακόμα και πως στο επερχόμενο Android L πλέον dalvik δεν θα υπάρχει.

Στο nexus 7 μου δοκιμάζω εδώ και λίγες ώρες τον ART. Δείχνει πιο γρήγορος χωρίς, ακόμα τουλάχιστον, να έχω παρατηρήσει κάποιο πρόβλημα...
Για το Galaxy Nexus μου πχ που τρέχει Cyanogenmod cm11 (M9), έχουν αναφερθεί προβλήματα με την χρήση art, παρά το ότι λένε πως η ταχύτητα αυξάνεται

Σχόλια, παρατηρήσεις, επεξηγήσεις, υποδείξεις, είναι απολύτως ζητούμενα!!!
 

tmjuju

Administration Team
Staff member
21 January 2007
21,651
Είναι αρκετά τεχνικό το θέμα
Το μέλλον είναι το ART και αυτό ήταν στα roadmaps εδώ και καιρό

Σκέψου το ως εξής
Ο προγραμματιστής γράφει σε μια γλώσσα προγραμματισμού τον κώδικα του
Η γλώσσα προγραμματισμού είναι ευκολοδιάβαστη μεν από ανθρώπους αλλά πρέπει να μεταφραστεί σε γλώσσα μηχανής για να τρέξει σε επεξεργαστή
Αλλά τα android τρέχουν σε πολλούς διαφορετικούς επεξεργαστές ARM/x86 κ.ο.κ και καθώς μεταξύ των διαφόρων ARM υπάρχουν και διαφορές λ.χ. ειδικοί μαθηματικοί συνεπεξεργαστές, 64bit, κ.ο.κ.
Δεν είναι επιθυμητό ο προγραμματιστής να ‛μεταφράσει’ το πρόγραμμα σε μια γλώσσα μηχανής αποκλειστικά για ένα επεξεργαστή. Θέλουμε να τρέχει παντού.
Αυτό που κάνουμε είναι να μεταφράζουμε την γλώσσα προγραμματισμού όχι σε γλώσσα μηχανής
Αλλά σε μια ενδιάμεση γλώσσα
Μια ενδιάμεση γλώσσα που είναι ένα επίπεδο πιο ‛αόριστη’ και ‛γενική’ από την πραγματική γλώσσα των επεξεργαστών
Οι εφαρμογές που κατεβάζουμε από το store, είναι όλες σε αυτή την ενδιάμεση γλώσσα. Έτσι πακετάρονται και φτάνουν στα χέρια μας.


Όταν έρθει η ώρα να τρέξει μια εφαρμογή όμως θα πρέπει αυτή την ενδιάμεση γλώσσα να μεταφραστεί σε γλώσσα μηχανής και μάλιστα γλώσσα μηχανής για τον εκάστοτε επεξεργαστή που έχουμε στα χέρια μας – στο κινητό μας. Θα γίνει μετάφραση δηλαδή ειδικά για τον συγκεκριμένο επεξεργαστή και τις δυνατότητες του.

Το Dalvik , εκείνη ακριβώς τη στιγμή που ξεκινάμε την εφαρμογή, ξεκινάει την μετάφραση από τον ενδιάμεσο κώδικα σε γλώσσα μηχανής. Αυτό που ακούς ως Just In Time Compiler (JIT).
Και κάθε φορά που ξεκινάμε την εφαρμογή πάλι τα ίδια, το μεταφράζει για να τρέχει.


Το ART, λειτουργεί διαφορετικά. Κατά την εγκατάσταση της εφαρμογής, κάνει μια ολοκληρωμένη μετάφραση και την αποθηκεύει έτοιμη για χρήση από τον επεξεργαστή μας.
Καταρχάς άρα κάθε φορά που ξεκινάμε την εφαρμογή έχουμε έτοιμη τη μετάφραση και άρα γλιτώνουμε χρόνο (το πληρώνουμε πιθανά σε χώρο αφού έχουν αποθηκευθεί κάποιες μεταφράσεις).


Πέραν της παραπάνω ουσιαστικής διαφοράς, υπάρχουν πολλά ακόμα που γίνονται, όπως η δέσμευση και αποδέσμευση μνήμης και οι σχετικοί αλγόριθμοι για τη διαχείριση της μνήμης. Η ποιότητα του κώδικα μηχανής που βγαίνει, πόσο καλά προσαρμοσμένη είναι πάνω σε κάθε επεξεργαστή, πόσο έξυπνα έγινε η μετάφραση έχοντας υπόψη και τον επακριβή επεξεργαστή. Και χίλιες δύο λεπτομέρειες για το πώς διαχειρίζονται τους πρώτους του συστήματος.


DomieMic65 , σαν απλός χρήστης δε θα έπρεπε να σε απασχολεί και πολύ ΙΜΗΟ, αλλά το ότι έβαλες ART ΙΜΗΟ καλό είναι, μπορεί να σου βγάλει κάνα μικρό Bug αλλά σήμερα πια είναι αρκετά stable, και θεωρούμε ότι όσο περνά ο καιρός θα προσαρμόζεται πολύ καλύτερα σε νέες αρχιτεκτονικές και επεξεργαστές με περισσότερες δυνατότητες.
 

DomieMic65

Supreme Member
10 July 2006
9,692
Αθήνα
tmjuju για άλλη μια φορά απολύτως κατανοητός και σαφής!
Ευχαριστούμε...

Τώρα σαφώς έχω πάρει μια ιδέα για το τι είναι όλο αυτό. Εξαιτίας της λειτουργίας του dalvik είναι λοιπόν που χρειάζεται να γίνει dalvik cache wipe κάθε φορά που γίνεται update στην ROM. Να υποθέσω πως με το art δεν θα χρειάζεται;

Θα το κρατήσω έτσι και αν δω πως αρχίζει τα περίεργα θα το αλλάξω...