Προγραμματισμός

Το Facebook εφευρίσκει μια εικονική μηχανή PHP

Ο γίγαντας κοινωνικής δικτύωσης Facebook έκανε ένα ακόμη βήμα στο να κάνει τη γλώσσα προγραμματισμού PHP Web να τρέχει πιο γρήγορα. Η εταιρεία έχει αναπτύξει μια PHP εικονική μηχανή που λέει ότι μπορεί να εκτελέσει τη γλώσσα έως και εννέα φορές πιο γρήγορα από την εκτέλεση της PHP εγγενώς σε μεγάλα συστήματα.

"Στόχος μας είναι να κάνουμε την PHP να τρέχει πραγματικά, πολύ γρήγορα", δήλωσε ο Joel Pobar, διευθυντής μηχανικής του Facebook. Το Facebook χρησιμοποιεί την εικονική μηχανή, που ονομάζεται HHVM (HipHop Virtual Machine), σε όλους τους διακομιστές της από νωρίτερα φέτος.

[Μάθετε πώς να εργάζεστε πιο έξυπνα, όχι πιο δύσκολο με τη συλλογή όλων των συμβουλών και των τάσεων που πρέπει να γνωρίζουν οι προγραμματιστές στον Οδηγό επιβίωσης των προγραμματιστών. Κατεβάστε το PDF σήμερα! | Παρακολουθήστε τις τελευταίες ειδήσεις προγραμματιστών με το ενημερωτικό δελτίο του Developer World. ]

Ο Pobar συζήτησε την εικονική μηχανή στο OSCON (O'Reilly Open Source Conference) που πραγματοποιήθηκε αυτήν την εβδομάδα στο Πόρτλαντ του Όρεγκον.

Η HHVM δεν είναι η πρώτη εισβολή του Facebook στην προσαρμογή της PHP για ταχύτερη χρήση. Η PHP είναι μια ερμηνευμένη γλώσσα, που σημαίνει ότι ο πηγαίος κώδικας εκτελείται απευθείας από τον επεξεργαστή. Σε γενικές γραμμές, προγράμματα γραμμένα σε ερμηνευμένες γλώσσες όπως η PHP τείνουν να μην εκτελούνται τόσο γρήγορα όσο οι γλώσσες, όπως C ή C ++, που έχουν μεταγλωττιστεί εκ των προτέρων σε κώδικα byte γλώσσας μηχανής. Το Facebook παρέμεινε πιστό στο PHP επειδή είναι ευρέως κατανοητό από πολλούς από τους προγραμματιστές Web που εργάζονται για την εταιρεία.

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

Ενώ το Facebook απολάμβανε σημαντικά κέρδη απόδοσης αυτής της πρώτης έκδοσης του HipHop για αρκετά χρόνια, αναζήτησε άλλους τρόπους για να επιταχύνει την παράδοση των δυναμικά δημιουργημένων ιστοσελίδων στους δισεκατομμύρια περίπου χρήστες του. "Η στρατηγική απόδοσης για αυτό επρόκειτο να αξιοποιηθεί", παραδέχτηκε ο Pobar.

Το HHVM είναι το επόμενο βήμα για το Facebook. Υπό ανάπτυξη για περίπου τρία χρόνια, το HHVM λειτουργεί στην ίδια αρχή με το JVM (Java Virtual Machine). Το HHVM διαθέτει μεταγλωττιστή JIT (just-in-time) που μετατρέπει τον αναγνώσιμο από τον ανθρώπινο πηγαίο κώδικα σε κώδικα byte αναγνώσιμο από μηχανή όταν χρειάζεται. (Το προηγούμενο HipHop, μετονομάστηκε HPHPc, έχει πλέον αποσυρθεί στο Facebook.)

Αυτή η προσέγγιση JIT επιτρέπει στην εικονική μηχανή να "λαμβάνει εξυπνότερες αποφάσεις κατά το χρόνο εκτέλεσης", δήλωσε ο Pobar. Για παράδειγμα, εάν πραγματοποιηθεί μια κλήση στη βάση δεδομένων MySQL για να διαβάσετε μια σειρά δεδομένων, το HHVM μπορεί, αμέσως, να καταλάβει τι είδους δεδομένα είναι, όπως ένας ακέραιος αριθμός ή μια συμβολοσειρά. Στη συνέχεια, μπορεί να δημιουργήσει ή να καλέσει κώδικα εν κινήσει που θα ταιριάζει καλύτερα στον χειρισμό αυτού του συγκεκριμένου τύπου δεδομένων.

Με το παλιό HipHop, "το καλύτερο που μπορεί να κάνει είναι να αναλύσει ολόκληρη τη βάση κώδικα του Facebook, να το σκεφτεί και, στη συνέχεια, να εξειδικεύσει τον κώδικα με βάση τη συλλογιστική του. Αλλά δεν μπορεί να πάρει σωστά όλη τη συλλογιστική. Υπάρχουν μέρη της βάσης κώδικα που δεν μπορείτε απλά να συμπεράνετε ή να κάνετε λόγο ", είπε ο Pobar.

Ο Pobar υπολόγισε ότι το HHVM είναι περίπου διπλάσιο από το HPHPc και περίπου εννέα φορές πιο γρήγορα από το τρέξιμο straight PHP.

Το Facebook έχει δημοσιεύσει τον κωδικό για το HHVM στο GitHub, με την ελπίδα ότι άλλοι θα το χρησιμοποιήσουν για να επιταχύνουν επίσης τους ιστότοπους PHP.

Το HHVM είναι βελτιστοποιημένο για το χειρισμό πολύ μεγάλων και πολύ χρησιμοποιούμενων, PHP κωδικών βάσεων. Ο Pobar υπολόγισε ότι η χρήση του HHVM για ιστότοπους τυπικού μεγέθους, όπως η φιλοξενία ιστολογίου Wordpress, θα κέρδιζε μόνο μια πενταπλάσια βελτίωση της απόδοσης.

"Εάν πάρετε λίγο PHP και το εκτελέσετε στο HipHop, ο χρόνος εκτέλεσης της CPU [μπορεί] να μην είναι ο περιοριστικός παράγοντας για την απόδοση. Οι πιθανότητες είναι ότι [το σύστημα] ξοδεύει πολύ χρόνο να μιλά στη βάση δεδομένων ή να ξοδεύει πολύ χρόνο για να μιλήσει [ το στρώμα προσωρινής αποθήκευσης του memcache, είπε ο Pobar.

Το Joab Jackson καλύπτει επιχειρηματικά λογισμικά και πρωτοποριακές ειδήσεις τεχνολογίας Η Υπηρεσία Ειδήσεων. Ακολουθήστε τον Joab στο Twitter στο @Joab_Jackson. Η διεύθυνση e-mail του Joab είναι [email protected]

$config[zx-auto] not found$config[zx-overlay] not found