ΣΥΜΜΑΖΕΜΑ ΕΦΑΡΜΟΓΗΣ: Το αναβαθμισμένο Chromium Embedded Framework (CEF) είναι σε λειτουργία

Η νέα έκδοση του CEF βρίσκεται σε λειτουργία με πολύ καλά αποτελέσματα ως τώρα!

Υποσχεθήκαμε ότι θα σας ενημερώνουμε τακτικά για την πρόοδο των εργασιών βελτίωσης της απόδοσης και της αξιοπιστίας της εφαρμογής του League of Legends. Η σημερινή ενημέρωση είναι το ένατο blog της σειράς. (Διαβάστε το πρώτο, δεύτερο, τρίτο, τέταρτο, πέμπτο, έκτο, έβδομο και όγδοο μέρος εδώ!)

ΜΕ ΛΙΓΑ ΛΟΓΙΑ: Ενημερώσαμε το CEF (Chromium Embedded Framework), το πρόγραμμα περιήγησης στο οποίο βασίζεται η Εφαρμογή του League, με την Ενημέρωση 11.17 και τα αποτελέσματα περιλαμβάνουν ελαφρώς βελτιωμένη χρήση μνήμης, χαμηλότερη αξιοποίηση του επεξεργαστή και λιγότερα κρασαρίσματα. Σχεδιάζουμε πιο συχνές ενημερώσεις στη συνέχεια που θα βελτιώσουν την αξιοπιστία και την απόδοση της εφαρμογής!

Ενημέρωση του Chromium Embedded Framework (CEF)

Είναι μια πολύ σημαντική στιγμή για την Καμπάνια Συμμαζέματος της Εφαρμογής! Στην αρχή του χρόνου, αποφασίσαμε ότι η αναβάθμιση της έκδοσης του Chromium Embedded Framework (CEF), δηλαδή του προγράμματος περιήγησης στο οποίο στηρίζεται όλη η εφαρμογή του League, στην έκδοση 91 ήταν η πιο ουσιαστική ενέργεια που μπορούσαμε να κάνουμε για να βελτιώσουμε την εφαρμογή. (Για να σας δώσουμε ένα χρονικό πλαίσιο, η προηγούμενη ενημέρωση έγινε τον Νοέμβριο του 2019 στην έκδοση 74...) Η ενημέρωση του CEF προσφέρει δύο πολύ σημαντικά οφέλη: Πρώτα από όλα, βελτιώνει αμέσως τη χρήση της μνήμης, την επιβάρυνση του επεξεργαστή και τη γενική σταθερότητα. Δεύτερον, μας επιτρέπει να κάνουμε πολλές βελτιώσεις στο μέλλον, καθώς περιλαμβάνει νέες λειτουργίες και εργαλεία (περισσότερα για αυτό σε λίγο). Για αυτούς τους λόγους, θέσαμε ως πρώτη μας προτεραιότητα φέτος την ενημέρωση του CEF και είμαστε στην ευχάριστη θέση να ανακοινώσουμε ότι η ενημέρωση στην έκδοση 91 ολοκληρώθηκε με επιτυχία στην Ενημέρωση 11.17 και τα αποτελέσματα ως τώρα είναι πολύ καλά!

Η εφαρμογή κρασάρει λιγότερο

Η αναβάθμιση του CEF μάς βοήθησε να λύσουμε πολλά από τα προβλήματα που έκαναν την εφαρμογή να κρασάρει και στόχος μας είναι να συνεχίσουμε να αντιμετωπίζουμε αυτά που επηρεάζουν περισσότερο τους παίκτες. Τα κρασαρίσματα ελαττώθηκαν κατά 61% από την Ενημέρωση 11.16 και κατά 38% σε σύγκριση με τον μέσο όρο του 2021 μέχρι σήμερα και σκοπεύουμε να συνεχίσουμε να βελτιώνουμε αυτές τις επιδόσεις. Για την ακρίβεια, τα αρχικά δεδομένα από την Ενημέρωση 11.18 δείχνουν κι άλλη μεγάλη πτώση στα κρασαρίσματα! Τα αποτελέσματα αυτά είναι πολύ ενθαρρυντικά, καθώς έχουμε σημαντικό αριθμό εκκινήσεων της εφαρμογής σε κάθε Ενημέρωση (οι οποίες μπορούν να ξεπεράσουν τα 240 εκατομμύρια στις περιοχές Riot!)

       

Ενημέρωση

Κρασαρίσματα

11.14

2.349.865

11.15*

3.686.442

11.16

3.161.145

11.17

1.214.155

(* η Ενημέρωση 11.15 είχε μεγαλύτερο κύκλο ζωής, για αυτό είναι τόσο υψηλότερος ο αριθμός.)

Η βασική αιτία για τα κρασαρίσματα που απομένουν φαίνεται ότι είναι η εξάντληση μνήμης των υπολογιστών. Αφού αναλύσαμε λίγο περισσότερο τα δεδομένα, παρατηρήσαμε ότι σχεδόν τα μισά από αυτά τα κρασαρίσματα που οφείλονται σε εξάντληση μνήμης συνέβησαν σε παλιούς υπολογιστές με Windows 7. Αν και σίγουρα υπάρχουν παίκτες σε όλον τον κόσμο που παίζουν το League σε παλιούς υπολογιστές με Windows 7 (είναι οι ελάχιστες προδιαγραφές μας αυτήν τη στιγμή), θα διερευνήσουμε πόσες από αυτές τις περιπτώσεις είναι bots, απαρχαιωμένες εκδόσεις των Windows ή αντίτυπα των Windows χωρίς άδεια χρήσης και θα εξετάσουμε αν ισχύουν άλλες συνθήκες που δεν συνάδουν με κανονικούς χρήστες που παίζουν νόμιμα το League.

Απαιτείται λιγότερη μνήμη

Παρατηρήσαμε σημαντική μείωση της μνήμης που χρησιμοποιεί το περιβάλλον της εφαρμογής σε μία περίοδο λειτουργίας. Το περιβάλλον της εφαρμογής περιλαμβάνει τα οπτικά στοιχεία με τα οποία αλληλεπιδρούν οι παίκτες, όπως κουμπιά, πεδία κειμένου και οτιδήποτε άλλο μπορείτε να δείτε και να πατήσετε. Τα αναλυτικά στοιχεία από τις περιοχές της Riot έχουν ως εξής:

Έκδοση CEF

Παίκτες 20ού εκατοστημορίου (ισχυρότεροι υπολογιστές)

Παίκτες 50ού εκατοστημορίου (υπολογιστές μεσαίων προδιαγραφών)

Παίκτες 90ού εκατοστημορίου (υπολογιστές χαμηλότερων προδιαγραφών)

74 (πριν από την Ενημέρωση 11.17)

359 MB

597 MB

1016 MB

91 (Ενημέρωση 11.17+)

74 MB

275 MB

598 MB

Βελτίωση

285 MB (79%)

322 MB (54%)

418 MB (41%)

Η μνήμη στη συγκεκριμένη περίπτωση λειτουργεί σαν την προσοχή μας: όσο λιγότερο απασχολείται, τόσο πιο εύκολο είναι να ασχοληθούμε ταυτόχρονα με άλλες εργασίες ή να εστιάσουμε σε αυτό που κάνουμε ήδη. Αυτό σημαίνει ότι υπάρχουν λιγότερα κρασαρίσματα, ενώ σας μένει αρκετή μνήμη για να δείτε streams από το LCS ενώ περιμένετε για τον επόμενο αγώνα κατάταξης!

Χαμηλότερη επιβάρυνση επεξεργαστή

Παρατηρήσαμε επίσης μείωση της ισχύος του επεξεργαστή που χρησιμοποιεί πλέον η εφαρμογή. Τα αναλυτικά στοιχεία από τις περιοχές της Riot έχουν ως εξής:

Έκδοση CEF

Παίκτες 20ού εκατοστημορίου (ισχυρότεροι υπολογιστές)

Παίκτες 50ού εκατοστημορίου (υπολογιστές μεσαίων προδιαγραφών)

Παίκτες 90ού εκατοστημορίου (υπολογιστές χαμηλότερων προδιαγραφών)

74 (πριν από την Ενημέρωση 11.17)

13%

34%

83%

91 (Ενημέρωση 11.17+)

10%

22%

72%

Ποσοστιαία μείωση

23%

35%

15%

Αυτό σημαίνει ότι ο υπολογιστής σας κοπιάζει λιγότερο για να τρέξει την εφαρμογή, άρα ο επεξεργαστής καταναλώνει λιγότερη ενέργεια και διατηρεί χαμηλότερες θερμοκρασίες. Για παράδειγμα, η αναπαραγωγή βίντεο επιβαρύνει πολύ τον επεξεργαστή, ενώ η εφαρμογή του League είναι πολύ πιο ελαφριά. Άρα τώρα μπορείτε να βλέπετε πιο άνετα Netflix και να ακούτε Pentakill.

Ποιες δυνατότητες μας προσφέρει η νεότερη έκδοση του CEF;

Εφαρμογές που βασίζονται στο Chromium

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

WebAssembly

Ας μιλήσουμε λίγο για το WebAssembly, μια μορφή κώδικα που μπορεί να εκτελεί περίπλοκες οδηγίες πολύ πιο γρήγορα από τη βασική JavaScript που χρησιμοποιούν πολλές επιμέρους εφαρμογές της εφαρμογής του League (θυμάστε τις εφαρμογές Ember από προηγούμενα blog;). Με απλά λόγια, το CEF προσομοιώνει έναν εξειδικευμένο «μίνι υπολογιστή» εντός της εφαρμογής, ο οποίος χρησιμοποιεί WebAssembly και επεξεργάζεται τον κώδικα πιο αποδοτικά. Επειδή το WebAssembly υποστηρίζει μια μεγάλη γκάμα γλωσσών προγραμματισμού, διευκολύνει τη χρήση του κώδικα που έχουμε γράψει ήδη, ενώ παράλληλα μάς προσφέρει ένα πλεονέκτημα απόδοσης που οφείλεται στην εκτέλεση διεργασιών στον εξειδικευμένο «μίνι υπολογιστή» που προαναφέραμε (αντί να ανοίγει ξεχωριστές εφαρμογές για την καθεμία). Το πρότυπο WebAssembly εξαπλώνεται σταδιακά σε όλο το διαδίκτυο και η υποστήριξή του στο Chromium βελτιώνεται με κάθε νέα έκδοση. Η πρόσβαση στο WebAssembly θα κάνει την εφαρμογή ταχύτερη και θα μας επιτρέψει να κάνουμε πράγματα που δεν μπορούσαμε στο παρελθόν.

Νήματα-εργάτες

Πέρα από όλα αυτά, έχουμε τα Νήματα-εργάτες. Παραδοσιακά, οι εφαρμογές Chromium εκτελούνται συγχρονισμένα, δηλαδή επεξεργάζονται μία γραμμή κώδικα τη φορά. Αυτό είναι σαν να έχεις έναν μόνο εργάτη για έναν ολόκληρο ιμάντα παραγωγής, ενώ με τα Νήματα-εργάτες μπορείς να αναβαθμίσεις εκθετικά την ομάδα σου, ώστε να είναι σε θέση να εκτελεί πολλαπλές γραμμές κώδικα παράλληλα. Ένα Νήμα-εργάτης συνομιλίας μπορεί να διαχειρίζεται ό,τι έχει να κάνει με τη συνομιλία, ενώ η κύρια εφαρμογή εστιάζει στην εύρεση του επόμενου παιχνιδιού. Άρα, αν έχετε έναν ιδιαίτερα ομιλητικό φίλο που ζητάει τη γνώμη σας για το νέο build του Τίμο, αυτή η συζήτηση δεν θα επιβραδύνει πλέον την εμπειρία της εφαρμογής σε άλλους τομείς. Τα Νήματα-εργάτες συνεισφέρουν και αυτά στην επιτάχυνση της εφαρμογής.

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

Άλλες ενημερώσεις

Επίσης, σημειώσαμε σημαντική πρόοδο στην Εμπειρία τέλους του παιχνιδιού (ΕΤΠ) από το προηγούμενο blog που δημοσιεύσαμε. Πρώτα από όλα, προσθέσαμε κώδικα για τη συλλογή δεδομένων σχετικά με τις καθυστερήσεις στη σελίδα «Αναμονή για τα στατιστικά» που ταλαιπωρούν ακόμα ορισμένους παίκτες. Αυτός ο κώδικας μάς βοήθησε να εντοπίσουμε και να βελτιώσουμε τη χρονική καθυστέρηση η οποία σε καμία περίπτωση δεν πρέπει να είναι τόσο μεγάλη όσο είναι τώρα. Επίσης συμπεριλάβαμε στην Ενημέρωση 11.17 μια επιδιόρθωση που μείωσε την πιθανότητα να παγώσει εντελώς η συγκεκριμένη σελίδα. Κάναμε κι άλλες διορθώσεις στη μηχανή του παιχνιδιού για να γίνει ακόμα πιο γρήγορα η ΕΤΠ στην Ενημέρωση 11.19. Τέλος —αλλά εξίσου σημαντικό!— καταφέραμε να ενσωματώσουμε τις Προκλήσεις και προσπαθούμε να διασφαλίσουμε ότι αυτή η νέα λειτουργία δεν θα επηρεάσει την απόδοση και την αξιοπιστία της εφαρμογής.

Τι επιφυλάσσει το μέλλον

Τώρα που γνωρίζουμε ότι η ενημέρωση του CEF συνέβαλε στην ουσιαστική βελτίωση της εφαρμογής, θα προγραμματίσουμε συχνότερες ενημερώσεις (σίγουρα πάντως δεν θα βγαίνουν κάθε 1,5 χρόνο, χαχα). Μέχρι το τέλος του 2021, θα συνεχίσουμε να ασχολούμαστε ως επί το πλείστον με την αξιοπιστία της εφαρμογής, θα βελτιώσουμε την ΕΤΠ σε συνεργασία με την ομάδα Προκλήσεων, θα αντιμετωπίσουμε ιδιαίτερα ενοχλητικά σφάλματα και θα συνεχίσουμε τη βελτιστοποίηση του κώδικα για να σας προσφέρουμε μια καλύτερη εμπειρία. Σας ευχαριστούμε που μοιραστήκατε τη χαρά μας για αυτό το πολύ σημαντικό ορόσημο της Καμπάνιας Συμμαζέματος της Εφαρμογής! Τα λέμε στο επόμενο blog.