Σύγκριση Απόδοσης JavaScript
Συγκρίνετε και αξιολογήστε δύο συναρτήσεις JavaScript δίπλα-δίπλα σε ένα web worker.
Είσοδος
Έξοδος
Readme
Τι είναι ένα JavaScript benchmark;
Ένα JavaScript benchmark μετρά πόσο γρήγορα εκτελείται ένα κομμάτι κώδικα, εκτελώντας το επανειλημμένα σε μια σταθερή χρονική περίοδο και μετρώντας πόσες λειτουργίες ανά δευτερόλεπτο μπορεί να ολοκληρώσει. Το benchmarking χρησιμοποιείται συνήθως για σύγκριση δύο προσεγγίσεων του ίδιου προβλήματος — για παράδειγμα, έλεγχος αν το Array.includes() είναι ταχύτερο από το Array.indexOf() για μια συγκεκριμένη περίπτωση χρήσης. Τα αποτελέσματα μπορούν να διαφέρουν σημαντικά μεταξύ των περιηγητών και των συσκευών, καθώς κάθε JavaScript engine (V8, SpiderMonkey, JavaScriptCore) έχει τις δικές του βελτιστοποιήσεις και στρατηγικές JIT compilation.
Περιγραφή εργαλείου
Αυτό το εργαλείο σας επιτρέπει να επικολλήσετε δύο αποσπάσματα κώδικα JavaScript και να εκτελέσετε μια άμεση σύγκριση απόδοσης κατευθείαν στον περιηγητή σας. Κάθε απόσπασμα χρονομετρείται σε μια ρυθμιζόμενη διάρκεια, και τα αποτελέσματα εμφανίζουν λειτουργίες ανά δευτερόλεπτο και μέσο χρόνο ανά λειτουργία και για τις δύο συναρτήσεις. Μια γραμμή προόδου επισημαίνει τη σχετική διαφορά απόδοσης, διευκολύνοντας την ταχεία αναγνώριση ποια προσέγγιση είναι ταχύτερη.
Χαρακτηριστικά
- Εκτελεί και τα δύο αποσπάσματα σε ένα Web Worker, ώστε τα benchmarks να μην μπλοκάρουν ή να παγώσουν την καρτέλα του περιηγητή
- Ρυθμιζόμενη διάρκεια benchmark για ισορροπία μεταξύ ακρίβειας και χρόνου αναμονής
- Σύγκριση ops/sec παράλληλα με ένα οπτικό γράφημα και ποσοστιαία διαφορά
Πώς λειτουργεί
Κάθε απόσπασμα τυλίγεται σε έναν βρόχο που εκτελείται για την καθορισμένη διάρκεια (προεπιλογή 2 δευτερόλεπτα) μετά από μια φάση προθέρμανσης 100 ms για να επιτρέψει στον JIT compiler να βελτιστοποιήσει τον κώδικα. Οι λειτουργίες μετρώνται κατά τη διάρκεια του χρονομετρημένου παραθύρου, και το ops/sec υπολογίζεται ως count / elapsed_ms * 1000. Ολόκληρο το benchmark εκτελείται μέσα σε ένα Web Worker, επομένως δεν μπορεί να έχει πρόσβαση στο DOM, αλλά έχει πρόσβαση σε τυπικά JavaScript globals όπως Math, Date, performance, arrays και objects.
Συμβουλές
- Διατηρήστε τα αποσπάσματα αυτόνομα· αποφύγετε παρενέργειες που συσσωρεύονται μεταξύ των επαναλήψεων
- Χρησιμοποιήστε μεγαλύτερη διάρκεια (3–5 δευτερόλεπτα) για πιο σταθερά αποτελέσματα σε γρήγορες λειτουργίες
- Τα αποτελέσματα αντικατοπτρίζουν τον συγκεκριμένο περιηγητή και τη μηχανή σας — πάντα κάντε benchmark στο περιβάλλον στόχου