פתיחת הכוח האמיתי של WebAssembly: סקירה מעמיקה של מיקרו-בנצ'מרקים, מיתוסים, שיטות ותוצאות. גלו מה באמת מניע את הביצועים באפליקציות אינטרנט מודרניות.
- מבוא: מדוע מיקרו-בנצ'מרקינג חשוב ל-WebAssembly
- הקמת סביבת מיקרו-בנצ'מרקינג מהימנה ל-WebAssembly
- מלכודות נפוצות ומיתוסים בבנצ'מרקי WebAssembly
- מדדים מרכזיים: מה עליכם באמת למדוד?
- השוואת ביצועי WebAssembly בין דפדפנים ומכשירים
- מקרים לשכות: תוצאות מיקרו-בנצ'מרקינג של WebAssembly מהעולם האמיתי
- אופטימיזציה של קוד WebAssembly להצלחה בבנצ'מרקינג
- פירוש התוצאות: ממיקרו-בנצ'מרקים לביצועים מאקרו
- מגמות עתידיות: הנוף המתרקם של בנצ'מרקים ל-WebAssembly
- סיכום: שיטות עבודה מומלצות ותובנות למפתחים
- מקורות וקטעים
מבוא: מדוע מיקרו-בנצ'מרקינג חשוב ל-WebAssembly
WebAssembly (Wasm) צמח במהירות כטכנולוגיה קריטית לאפשר אפליקציות בעלות ביצועים גבוהים באינטרנט, והציע מהירויות ביצוע קרובות ל-native ותמיכה בשפות רחבה. ככל שגדל השימוש ב-Wasm, הבנת המאפיינים הביצועיים האמיתיים שלו הופכת חיונית עבור מפתחים וארגונים המעוניינים לייעל את האפליקציות שלהם. מיקרו-בנצ'מרקינג—מדידת הביצועים של קטעי קוד קטנים ומבודדים—משחק תפקיד מרכזי בתהליך זה. בניגוד לבנצ'מרקים מאקרו, המעריכים את ביצועי האפליקציה הכוללת, מיקרו-בנצ'מרקים מתמקדים בהצלחות ספציפיות כמו אריתמתיקה, גישה לזיכרון או קריאות פונקציות, ומספקים הבנות מפורשות על היעילות של סביבת הביצוע של Wasm.
מיקרו-בנצ'מרקינג חשוב עבור WebAssembly מכיוון שהוא מסייע בזיהוי瓶י תנועה, מנחה מאמצי אופטימיזציה ומודיע על החלטות בנושא בחירת סביבת ריצה ואסטרטגיות של יצירת קוד. Wasm מתבצע בסביבות שונות, כולל דפדפנים, ריצות עצמאיות ופלטפורמות קצה, כל אחת עם מאפייני ביצועים ייחודיים. מיקרו-בנצ'מרקים מאפשרים למפתחים להשוות בין הסביבות הללו, revealing subtle differences in how they handle low-level operations. This is particularly important given the evolving nature of Wasm engines, which frequently introduce new optimizations and features (WebAssembly).
בנוסף, מיקרו-בנצ'מרקינג תומך באקוסיסטם הרחב של WebAssembly על ידי מתן נתוני ביצועים ממוקדים וחוזרים שיכולים להניע שיפורים בקומפילרים ובסביבות ריצה. זה גם מסייע לאמת את השפעת ההרחבות המוצעות בשפה או APIs חדשים, ומוודא שהשיפורים מביאים תועלת ממשית. לסיכום, מיקרו-בנצ'מרקינג הוא פרקטיקה בסיסית עבור כל מי שמעוניין לנצל את מלא הפוטנציאל של WebAssembly, ומאפשר אופטימיזציה מושכלת ומקדם הבנה מעמיקה יותר של נוף הביצועים של Wasm (Bytecode Alliance).
הקמת סביבת מיקרו-בנצ'מרקינג מהימנה ל-WebAssembly
הקמת סביבה מהימנה למיקרו-בנצ'מרקינג של WebAssembly היא חיונית להשגת מדידות ביצועים מדויקות והחזרות. הצעד הראשון כולל בחירת בסיס חומרה ותוכנה עקביים. זה אומר להריץ בנצ'מרקים על אותה מכונה פיזית, עם הגדרות קביעת תדר CPU קבועות, והכנת תהליכים מקבילים שעלולים להכניס רעש. השימוש בכלי קונטיינריזציה כמו Docker יכול לסייע בסטנדרטיזציה של הסביבה, אך חשוב להבטיח שעלויות הקונטיינר לא משבשות את התוצאות.
בחירת דפדפן והגדרותיו משמעותיים גם כן. דפדפנים שונים מיישמים מנועי WebAssembly עם אסטרטגיות אופטימיזציה שונות, ולכן יש להריץ בנצ'מרקים על מספר דפדפנים—כגון Mozilla Firefox, Google Chrome ו-Microsoft Edge—כדי ללכוד פרופיל ביצועים מקיף. השבתת תוספי דפדפן, הפעלת מצב אינקוגניטו ושימוש בדגלי שורת פקודה כדי לכבות תכונות כמו JIT debugging או הקטנת כרטיסי רקע יכולים להוריד עוד יותר את המשתנים.
לזמן מדויק, מומלץ לנצל טיימרים ברזולוציה גבוהה כמו Performance.now(), אך יש להיזהר לקחת בחשבון את רזולוציית הטיימרים ואת האפשרות של חניקה מטעמי אבטחה. הרצת כל בנצ'מרק מספר פעמים ודיווח על מדדים סטטיסטיים (ממוצע, חציון, סטיית תקן) עוזרת לצמצם את השפעת המצבים הזמניים של המערכת. לבסוף, תיעוד כל המשתנים הסביבתיים, גרסאות הדפדפן, והגדרות המערכת מבטיח שהתוצאות יהיו חזרות וכשירות להשוואה בין סטאפים שונים, כפי שמוזכר על ידי WebAssembly Community Group.
מלכודות נפוצות ומיתוסים בבנצ'מרקי WebAssembly
מיקרו-בנצ'מרקינג של WebAssembly הוא תהליך עדין, ויש מספר מלכודות ומיתוסים נפוצים שעלולים להגביל את תוקף התוצאות. אחת הבעיות הנפוצות היא ההנחה כי מיקרו-בנצ'מרקים משקפים ישירות ביצועים בעולם האמיתי. מיקרו-בנצ'מרקים לרוב מבודדים פעולות ספציפיות, כגון אריתמטיקה או גישה לזיכרון, אך הם לא לוקחים בחשבון את האינטראקציות המורכבות הנוכחות באפליקציות מלאות, כגון I/O, השהיית רשת או ריבוי חוטים. כתוצאה מכך, מיקרו-בנצ'מרקים עשויים להכביר או להמעיט את יתרונות הביצועים המעשיים של WebAssembly בסביבות הפקה.
מיתוס נוסף הוא שכל הדפדפנים וסביבות הריצה מבצעים קוד WebAssembly בצורה זהה. למעשה, הביצועים עשויים להשתנות משמעותית בין מנועים שונים (למשל, V8 ב-Chrome, SpiderMonkey ב-Firefox, או Wasmtime לביצוע עצמאי), בשל הבדלים באסטרטגיות אופטימיזציה, באיסוף זבל ובקומפילציה JIT. כישלון לקחת בחשבון את השוני הזה עלול להוביל למסקנות מטעות לגבי היעילות של WebAssembly או ההתאמה שלו למקרה שימוש ספציפי. לצורך ביצוע בנצ'מרקינג מדויק, חיוני לבדוק בסביבות רבות ולתעד את הגרסאות וההגדרות הספציפיות שנעשה בהן שימוש (WebAssembly).
בנוסף, מיקרו-בנצ'מרקים חשופים להשפעות חימום מנוע JavaScript, אחסון ואופטימיזציות רקע. בנצ'מרקים שאינם כוללים מספיק חימום או שלא מצליחים לשלוט בגורמים אלו עשויים לדווח על תוצאות לא עקביות או מלאכותיות. מתודולוגיה נכונה—כגון דחיית ריצות ראשוניות, שימוש בטיימרים ברזולוציה גבוהה והרצת מבחנים בסביבות מבודדות—עוזרת לצמצם בעיות אלו (V8).
בסופו של דבר, הבנת מלכודות אלו היא חיונית ליצירת תובנות מהימנות וברות פעולה ממיקרו-בנצ'מרקי WebAssembly ולמניעת טענות כלליות מדי או לא מדויקות על הביצועים.
מדדים מרכזיים: מה עליכם באמת למדוד?
בעת ביצוע מיקרו-בנצ'מר킹 של WebAssembly, בחירת המדדים הנכונים היא חיונית להשגת תובנות משמעותיות וברות פעולה. המדד הנמדד הנפוץ ביותר הוא זמן ביצוע, שדווח בדרך כלל כממוצע, חציון או אחוזונים. עם זאת, התמקדות במהירות גולמית בלבד יכולה להיות מטעה, שכן הביצועים של WebAssembly מושפעים מגורמים כמו קומפילציה JIT, שלבי חימום ומשתנה בסביבות האירוח. לכן, חיוני גם למדוד זמן הפעלה—הפרש הזמן מקיום המודול ועד לביצוע הפונקציה הראשונה—שקשור במיוחד לתרחישים של מחשוב ללא שרת ולמחשוב קצה שבו התחלה קרה היא תופעה שכיחה (WebAssembly.org).
מדד מרכזי נוסף הוא שימוש בזיכרון, הכולל גם את הצריכה המקסימלית וגם את זו היציבה. המודל ליניארי של זיכרון ושל התנהגות האיסוף זבל של WebAssembly יכולים להשפיע על יכולת התגובה של האפליקציה, במיוחד בסביבות עם משאבים מוגבלים. בנוסף, יש לעקוב אחרי גודל הבינארי, שכן בינארים קטנים מקטינים את זמני ההורדה והטעינה, והשפעותיהם ישירות על חוויית המשתמש בטקסט אינטרנט (World Wide Web Consortium (W3C)).
למיקרו-בנצ'מרקינג מתקדמים יותר, שקלו מדדים ברמת המערכת כגון ניצול CPU, החטאות במטמון ועומס ב-I/O, שיכולים לחשוף瓶י תנועה שאינם נראים רק מהזמנים. לבסוף, דטרמיניזם וחזרתיות הם קריטיים: בנצ'מרקים צריכים להתנהל בסביבות מבוקרות, תוך תשומת לב לגרסאות דפדפן או סביבת הריצה, חומרה ותהליכים רקע, כדי להבטיח שהתוצאות יהיו גם מהימנות וגם ניתנות להשוואה (WebAssembly Specification).
לסיכום, מיקרו-בנצ'מרקינג יעיל של WebAssembly דורש גישה הוליסטית, המדוד לא רק מהירות אלא גם זיכרון, גודל בינארי והתנהגות ברמת המערכת, תוך הבטחה לבקרות ניסיוניות קפדניות.
השוואת ביצועי WebAssembly בין דפדפנים ומכשירים
השוואת הביצועים של WebAssembly (Wasm) בין דפדפנים ומכשירים היא תהליך עדין שמגלה שונות משמעותית בעקבות ההבדלים במנועי JavaScript, ארכיטקטורות חומרה ומשאבים מערכתיים. מיקרו-בנצ'מרקינג—שימוש במבחנים קטנים וממוקדים למדידת מהירות הביצוע של פעולות Wasm ספציפיות—משמש ככלי קריטי לזיהוי הפערים בביצועים האלה. לדוגמה, אותו קוד Wasm עשוי להתבצע במהירויות שונות על Mozilla Firefox (עם מנוע SpiderMonkey) לעומת Google Chrome (עם V8), בשל ההבדלים בצינורות הקומפילציה של Wasm ואסטרטגיות האופטימיזציה.
למשאבי החומרה במכשירים יש השפעה נוספת על הנוף. מכשירים ניידים, עם מעבדים וזיכרון מוגבלים, לרוב משיגים ביצועים נמוכים יותר של Wasm בהשוואה למחשבים נייחים, אפילו באותו דפדפן. בנוסף, מיקרו-בנצ'מרקים יכולים להציג כמה טוב דפדפן מנצל תכונות חומרה כמו הוראות SIMD או עיבוד מרובה ליבות, שהתמיכה בהם הולכת וגדלה בסביבות Wasm מודרניות. לדוגמה, Apple Safari על מכשירים מבוססי ARM עשוי להראות מאפייני ביצועים שונים מאשר על מכונות מבוססות אינטל, מה שמתאר את השפעת החומרה על ביצועי Wasm.
כדי להבטיח השוואות הוגנות ומשמעותיות, חיוני לשלוט בגורמים כמו גרסת דפדפן, מצב תרמי של מכשירים ותהליכים רקע. כלים כמו WebAssembly Binary Toolkit ומפרטי ביצועים דפדפניים יכולים לסייע באיסוף מדידות מדויקות. בסופו של דבר, מיקרו-בנצ'מרקינג בין דפדפנים ומכשירים לא רק מדגיש פערים ביצועים נוכחיים אלא גם מספק הכוונה לספקי הדפדפנים ולמפתחי כלי Wasm באופטימיזציה של המימושים שלהם עבור מגוון רחב יותר של סביבות.
מקרים לשכות: תוצאות מיקרו-בנצ'מרקינג של WebAssembly מהעולם האמיתי
מקרים לשכות של מיקרו-בנצ'מרקינג של WebAssembly מהעולם האמיתי מספקים תובנות יקרות לגבי מאפייני הביצועים המעשיים של WebAssembly בסביבות ועבודות yüklers. לדוגמה, מחקר מקיף שנערך על ידי V8 JavaScript Engine השווה את ביצועי WebAssembly ו-JavaScript על ליבת חישוב כמו הכפלת מטריצות, חישוב קריפטוגרפי ועיבוד תמונה. התוצאות הראו ש-WebAssembly לרוב משיג מהירויות ביצוע קרובות ל-native, במיוחד למשימות חישוב, והצליח outperform JavaScript ביחס של 1.2x ועד מעל 10x בהתאם לעומס הספציפי ולדפדפן.
מקרה נוסף בולט הוא הבנצ'מרקינג של WebAssembly בסביבות ללא שרת, כפי שדווח על ידי Fastly. ממצאיהם Highlighted that WebAssembly modules exhibit low cold start times and consistent execution latency, making them suitable for edge computing scenarios. However, the study also revealed that performance can vary significantly based on the host runtime and the complexity of the code being executed.
בנוסף, Bytecode Alliance ביצעה מיקרו-בנצ'מרקים במספר סביבות ריצה, כולל Wasmtime ו-Wasmer, והראתה כי אמנם WebAssembly נייד מאוד, ישנם הבדלים ניכרים במהירות הביצוע ובשימוש בזיכרון בין סביבות ריצה שונות. מקרים לשכות אלו מדגישים את החשיבות של בנצ'מרקינג הקשר ספציפי ואת הצורך לשקול גורמים כמו יישום סביבת הריצה, מאפייני העומס ועומס משאבים בעת הערכת ביצועי WebAssembly באפליקציות מהעולם האמיתי.
אופטימיזציה של קוד WebAssembly להצלחה בבנצ'מרקינג
אופטימיזציה של קוד WebAssembly (Wasm) להצלחה במיקרו-בנצ'מרקינג דורשת גישה עדינה שמשווה בין בהירות הקוד, ביצועים והמאפיינים הייחודיים של סביבת הביצוע של Wasm. מיקרו-בנצ'מרקים רגישים מאוד ליעילות מועטה, אז המפתחים צריכים לשים לב גם לקוד Wasm ביתי שנוצר וגם לקוד JavaScript שמסביב. אחת האסטרטגיות המרכזיות היא למזער את העלויות של קריאות פונקציות בין JavaScript ל-Wasm, שכן חציית גבולות תכופה יכולה לעוות את תוצאות הבנצ'מרק ולהסתיר את הביצועים האמיתיים של קוד Wasm. הכנסת פונקציות קריטיות והעברת נתונים באצווה יכולות לעזור להוריד את העלות הזאת.
שיקול חשוב נוסף הוא השימוש בדגלי אופטימיזציה ספציפיים ל-Wasm במהלך הקומפילציה. לדוגמה, הפעלת אופטימיזציה בזמן הקישור (LTO) והסרת קוד מת כלשהו יכולים לייצר בינארים רזים שמבצעים יותר ביעילות במיקרו-בנצ'מרקים. המפתחים גם צריכים להיות מודעים להשפעת אסטרטגיות ניהול הזיכרון, כמו הקצאת זיכרון ליניארי וניהול זיכרון ידני, שיכולות להשפיע על מיקום המטמון ומהירות ביצוע. כלים לציוני דרך שמסופקים על ידי ספקי דפדפן, כמו Google Chrome DevTools, יכולים לעזור לזהות瓶י תנועה ולהנחות אופטימיזציות ממוקדות.
לבסוף, חיוני להבטיח שמיקרו-בנצ'מרקים יהיו מייצגים ולא מותאמים יתר על המידה לאופטימיזציות ספציפיות שעשויות לא להיות מעשיות לעומסי עבודה אמיתיים. זה כולל הימנעות ממבני קוד מלאכותיים שיפרשו את התנהגות המחשב JIT או את הייחודיות של מנוע Wasm. על ידי התמקדות בקוד מציאותי ובאופטימיזציה טובה וניצול טכניקות קומפילציה האחרונות, מפתחים יכולים להבטיח שמיקרו-בנצ'מרקי WebAssembly שלהם יספקו תובנות משמעותיות וברות פעולה לגבי מאפייני הביצועים.
פירוש התוצאות: ממיקרו-בנצ'מרקים לביצועים מאקרו
פירוש התוצאות של מיקרו-בנצ'מרקי WebAssembly (Wasm) דורש שיקול דעת זהיר, שכן התובנות שהושגו ממבחנים מבודדים וקטנים לא תמיד מתורגמות ישירות לביצועי אפליקציות ברמה מאקרו. מיקרו-בנצ'מרקים בדרך כלל מודדים את מהירות הביצוע של הוראות Wasm ספציפיות, פונקציות או קטעי קוד קטנים, לרוב בסביבות מבוקרות שמפחיתות השפעות חיצוניות. בעוד שהתוצאות הללו יכולות להדגים את היעילות החישובית הגולמית של מנועי Wasm או את השפעת האופטימיזציות הספציפיות, הן עשויות לא לקחת בחשבון את המורכבות של עומסי עבודה של אפליקציות מלאות, כמו ניהול זיכרון, פעולות I/O או אינטראקציות עם JavaScript ו APIs של דפדפן.
אתגר מרכזי הוא שמיקרו-בנצ'מרקים יכולים להפריז בחשיבות של מסלולי קוד חמים או אופטימיזציות ספציפיות של מנועים, דבר שיכול להוביל למסקנות מטעות לגבי ביצועים כלליים. לדוגמה, מנוע WebAssembly עשוי להצליח בלולאות צמודות או בפעולות אריתמטיות במיקרו-בנצ'מרקים, אך יישומים אמיתיים כוללים לעיתים קרובות תערובת של חישוב, מיון נתונים ומעבר תכוף בין Wasm ל-JavaScript. גורמים אלו עשויים להכניס עלויות שלא נלכדות במיקרו-בנצ'מרקים, כפי שמודגש על ידי WebAssembly.org ולימודי ביצועים מ- V8.
כדי לגשר על הפער בין ביצועים מיקרו למאקרו, חיוני להשלים את מיקרו-בנצ'מרקינג עם בנצ'מרקים מאקרו—מבחנים המדמים תרחישי אפליקציה ריאליסטיים. בנוסף, כלים לציוני דרך ומעקב ביצועים, כמו אלה שסופקו על ידי Mozilla Developer Network (MDN), יכולים לעזור לזהות瓶י תנועה ולמדר את תוצאות המיקרו-בנצ'מרקים בתוך התנהלות רחבה יותר של האפליקציה. בסופו של דבר, גישה הוליסטית שמשלבת גם ניתוח ברמה מיקרו וגם ברמה מאקרו מפיקה את התובנות הברות פעולה ביותר כדי לייעל את ביצועי WebAssembly בסביבות הפקה.
מגמות עתידיות: הנוף המתרקם של בנצ'מרקים ל-WebAssembly
הנוף של מיקרו-בנצ'מרקינג של WebAssembly (Wasm) מתפתח במהירות, מונע על ידי אימוץ הולך ומתרקם של Wasm בפלטפורמות שונות והמורכבות הגוברת של סביבות הביצוע שלו. ככל ש-Wasm משתכלל, צפויים להתמקד מגמות עתידיות במיקרו-בנצ'מרקינג במדידות ביצועים יותר מפורטות וריאליסטיות, שיעשו שימוש לדפוסים אמיתיים ולא במבחנים סינתטיים ומבודדים. מגמה משמעותית אחת היא שילוב של בנצ'מרקינג המודע לחומרה, שבו מיקרו-בנצ'מרקים מותאמים להתחשב בהבדלים בארכיטקטורות CPU, היררכיות זיכרון ואופטימיזציות ספציפיות לדפדפן. גישה זו שואפת לספק תובנות יותר ברות פעולה גם עבור מפתחי מנועי Wasm וגם עבור כותבי אפליקציות.
כיוון חדש נוסף הוא הסטנדרטיזציה של ערכות א Benchmarking ומטודולוגיות. יוזמות כמו WebAssembly Community Group פועלות ליצור מסגרות בנצ'מרקינג כוללות, ניתנות לחזרה ושקופות. יוזמות אלו עוזרות להבטיח שטענות ביצועים יהיו ניתנות להשוואה בין מנועים ופלטפורמות שונות, ומקדמות אקוסיסטם יותר משתף פעולה. בנוסף, עליית המחשוב בקצה ופלטפורמות ללא שרת מעודדת את הפיתוח של מיקרו-בנצ'מרקים המעריכים זמני התחלה קרים, ניצול משאבים והשפעות של ריבוי משתמשים, שחשובים למימוש של Wasm בסביבות נייטיב בענן.
בהסתכלות קדימה, צפוי גם שילוב של טכניקות למידת מכונה לניתוח ביצועים אוטומטי וזיהוי אנומליות במיקרו-בנצ'מרקינג של Wasm. חידושים כאלה יאפשרו אופטימיזציה מתמשכת וזיהוי מהיר של החמרה. ככל ש-Wasm מעמיק מעבר לדפדפן, הנוף של הבנצ'מרקים ככל הנראה יהפוך לעוד מגוון, שיאלץ כלים מתאימים וניתנים להרחבה כדי לעמוד בקצב התפתחות הטכנולוגיה World Wide Web Consortium (W3C).
סיכום: שיטות עבודה מומלצות ותובנות למפתחים
מיקרו-בנצ'מרקינג של WebAssembly הנכונה דורשת גישה מסודרת כדי להבטיח שהתוצאות יהיו גם מדויקות וגם ברות פעולה. מפתחים צריכים להעדיף את בידוד הקוד שנבדק, ולהפחית השפעות חיצוניות כמו השהיית רשת, פעולות I/O או שונות של סביבת האירוח. ניצול כלים כמו WebAssembly Binary Toolkit ומפרטי ביצועים דפדפניים יכול להסייע בזיהוי瓶י תנועה ולספק תובנות מפורטות על זמני ביצוע.
חיוני להריץ בנצ'מרקים בסביבות ריאליסטיות, אידיאלי לחקות את תנאי ההפקה, שכן ביצועי WebAssembly יכולים להשתנות משמעותית בין דפדפנים וחומרה. מדידות חוזרות וניתוח סטטיסטי—כגון חישוב חציינות וסטיית תקן—עוזרים להקל על השפעת חריגות ולספק פרופיל ביצועים יותר מהימן. מפתחים צריכים גם להיות מודעים לאופטימיזציות של מנועי JavaScript וההשפעות על חימום, ולהבטיח שהבנצ'מרקים לוקחים בחשבון קומפילציה JIT והתנהגויות кеш.
השוואת ביצועי WebAssembly מול יישומים טבעיים ו-JavaScript יכולה להדגיש אזורים אפשריים לאופטימיזציה ולמדר החלטות ארכיטקטוריות. שמירה על תיעוד ברור של הגדרות הבנצ'מרק, כולל גרסאות קוד, דגלי קומפיילר והגדרות ריצה, היא חיונית לחזרתיות ולסקירה על ידי עמיתים. לבסוף, הישארות מעודכנת לגבי שיטות עבודה טובות ואינפורמציות מעודכנות מקבוצת העבודה של World Wide Web Consortium (W3C) WebAssembly מבטיחה שהאסטרטגיות לבנצ'מרקינג ימשיכו להיות מתואמות עם הסטנדרטים וההתפתחויות של האקוסיסטם העדכניות ביותר.
על ידי התנהלות לפי שיטות עבודה מומלצות אלו, מפתחים יכולים להפיק תובנות משמעותיות ממיקרו-בנצ'מרקים, וליצור אפליקציות WebAssembly יותר יעילות ומהימנות.
מקורות וקטעים
- WebAssembly
- Bytecode Alliance
- Mozilla Firefox
- Google Chrome
- Microsoft Edge
- Performance.now()
- V8
- World Wide Web Consortium (W3C)
- WebAssembly Specification
- Apple Safari
- Fastly
- Google Chrome DevTools