logo

O Firefox αντεπιτίθεται με νέα πάρα πολύ γρήγορη CSS μηχανή (Quantum CSS)

25/08/2017

Κάποτε ο Firefox είχε καταφέρει να ρίξει τον Internet Explorer από τον θρόνο του και είχε γίνει ο αγαπημένος εναλλακτικός browser. Και μετά ήρθε η Google με τον Chrome και ξεκίνησε μια νέα αυτοκρατορία. Ο Firefox έμεινε αρκετά πίσω.

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

Για να το κάνουν αυτό, αντικαταστούν κομμάτι-κομμάτι την κάθε φορά. Το πρώτο κομμάτι που άλλαξε είναι η νέα μηχανή CSS και ονομάζεται Quantum CSS (γνωστό και σαν Stylo). Με την μηχανή αυτή δεν υπερηφανεύονται ότι ανακάλυψαν ξανά τον τροχό, αλλά λένε ότι έχουν πάρει στοιχεία από 4 browsers για να φτάσουν σε αυτό το αποτέλεσμα.

Την παράλληλη επεξεργασία από τον Servo, το Rule Tree από τον Firefox, την Style Sharing Cache από τον Chrome και τον Safari.

Με την παράλληλη επεξεργασία εκμεταλλεύεται τους πυρήνες του επεξεργαστή για να μοιράσει την δουλειά κι έτσι μπορεί να πετύχει αύξηση της ταχύτητας από 2-4 φορές, μέχρι και 18. Η Quantum CSS σπάει την επεξεργασία του styling των διαφορετικών DOM nodes, σε διαφορετικούς πυρήνες του επεξεργαστή. Το πράγμα είναι όμως αρκετά δύσκολο, αφού το DOM tree είναι συνήθως πολύ άνισο κι έτσι μπορεί να καταλήξει ένας πυρήνας να υπερεργάζεται και άλλος να… τεμπελιάζει.

Αυτό που κάνει η Quantum CSS είναι να σπάει την επεξεργασία των childrens των DOM nodes σε work units. Αυτά τα work units μπαίνουν στην ουρά εργασίας για κάθε πυρήνα του επεξεργαστή.  Αν ένας πυρήνας τελειώσει με δικά του work units, τότε κλέβει από άλλον πυρήνα για να συνεχίσει να εργάζεται. Έτσι όλη η δουλειά μοιράζεται ισόρροπα σε όλους τους πυρήνες.

Με το Rule Tree η Quantum CSS έχει σε ένα tree τα style rules των DOM nodes, αλλά πετυχαίνει το να μην επαναλαμβάνονται συνέχεια τα ίδια και τα ίδια rules. Προσπαθεί να κρατάει τον αριθμό των κλαδιών στο ελάχιστο και γι’ αυτό χρησιμοποιεί το ίδιο κλαδί όταν αυτό επαναλαμβάνεται.

Με την Style Sharing Cache, προσπαθεί να κρατάει σε cache το αποτέλεσμα της επεξεργασίας του styling για κάθε DOM node. Έτσι πολλά nodes που μπορεί να επαναλαμβάνονται δεν χρειάζεται να επεξεργαστούν ξανά.

Μπορείτε να δοκιμάσετε την Quantum CSS στην Nightly έκδοση του Firefox και πηγαίνοντας στο about:config για να σιγουρευτείτε ότι το layout.css.servo.enabled έχει την τιμή true.

[πηγή hacks.mozilla.org]

Write your comment

rocean (at) error.gr
rocean
error.gr
feed