ההפעלה של כלי הפיתוח מהירה יותר ב-13% בערך 🎉 (מ-11.2 שניות עד 10 שניות)
אמ;לק; התוצאה מתקבלת על ידי הסרת סידור בהמשכים מיותר.
סקירה
במהלך ההפעלה של כלי הפיתוח, צריך לבצע מספר קריאות למנוע V8 JavaScript.
המנגנון שמשמש את Chromium לשליחת פקודות DevTools אל V8 (ול-IPC באופן כללי) נקרא mojo
. חברי הצוות שלי בנדיקט מורר וסיגורד שניידר גילו חוסר יעילות במהלך עבודה על משימה אחרת, והעלו רעיון לשיפור התהליך באמצעות הסרת שני שלבים מיותרים באופן השליחה והקבלה של הודעות אלה.
נסביר בפירוט איך פועל מנגנון mojo
.
המנגנונים של mojo
יש פקודת mojo EvaluateScript
שמפעילה את פקודת ה-JS. הוא מבצע סריאליזציה של כל פקודת ה-JS, כולל arguments
, למחרוזת של קוד מקור של JavaScript שיכולה להיות eval()
. כפי שאתם עשויים לדמיין, מחרוזות אלה יכולות להיות ארוכות ויקרות למדי. אחרי שהפקודה מתקבלת ב-V8, המחרוזות האלה של קוד JavaScript עוברות פעולת deserialize לפני שהן מריצים. התהליך הזה של סידור מחדש ושינויי רקע לכל הודעה יוצרת תקורה משמעותית.
ב-Bedikt Meurer הבין שניהול סריאליזציה והתמדה של arguments
הוא יקר למדי, ושכל השלבים "Serialize JS למחרוזת JS" ו-"Deserialize JS string" הם מיותרים ואפשר לדלג עליהם.
פרטים טכניים: RenderFrameHostImpl::ExecuteJavaScript
איך השתפרנו
הצגנו שיטת mojo API נוספת שמאפשרת לנו להעביר את שם האובייקט, את השיטה לקריאה ואת רשימת הארגומנטים באופן ישיר, במקום ליצור את המחרוזת של קוד המקור של JavaScript. כך אנחנו יכולים לדלג על סריאליזציה ועל פעולת deserialization, ולבטל את הצורך לנתח את קוד ה-JavaScript.
לקבלת פרטים טכניים על האופן שבו יישמנו אופטימיזציה זו, עיין בשני התיקונים הבאים:
- CL 2431864: [devtools] הפחתת תקורת הביצועים של שליחת הודעות בממשק הקצה
- CL 2442012: [כלים למפתחים] שימוש ב-
ExecuteJavaScriptMethod
בכלי פיתוח
השפעה
כדי למדוד את היעילות של השינוי, ערכנו כמה מדידות והשוו בין תיקונים ב-Chromium cb971089a058 ו-4f213b39d581 (לפני ואחרי השינוי).
לגבי שתי הגרסאות, הפעלנו את התרחיש הבא 5 פעמים:
- הקלטת מעקב באמצעות
chrome://tracing
- פתיחת כלי הפיתוח בכלי הפיתוח
- קבלת מעקב ה-
CrRendererMain
המתועד והשוואה של המדדים הספציפיים ל-V8.
על סמך הניסויים האלה, כלי הפיתוח נפתחים במהירות 13% בערך (מ-11.2 שניות עד 10 שניות) עם האופטימיזציה.
דגשים, משכי הזמן של המעבד (CPU)
שם השיטה | ללא אופטימיזציה (אלפיות שנייה) | אופטימיזציה (אלפיות שנייה) | הבדלים (באלפיות שנייה) | שיפור מהירות (%) |
סה"כ | 11,213.19 | 9,953.99 | -1,259.20 | 12.65% |
v8.run | 499.67 | 3.61 | -496.06 | 12.65% |
V8.Execute | 1,654.87 | 1,349.61 | -305.25 | 3.07% |
v8.callFunction | 1,171.84 | 1,339.77 | 167.94 | -1.69% |
v8.compile | 133.93 | 3.56 | -130.37 | 1.31% |
טבלת השוואה מלאה בין מדדי המעקב
כתוצאה מכך, כלי הפיתוח נפתחים ופועלים מהר יותר עם פחות שימוש במעבד (CPU). 🎉
מורידים את הערוצים של התצוגה המקדימה.
כדאי להשתמש ב-Chrome Canary, Dev או בטא כדפדפן הפיתוח שמוגדר כברירת מחדל. ערוצי התצוגה המקדימה האלה מעניקים לך גישה לתכונות החדשות של כלי הפיתוח, בודקים ממשקי API מתקדמים של פלטפורמת האינטרנט ומוצאים בעיות באתר לפני שהמשתמשים נתקלים בבעיות!
יצירת קשר עם צוות כלי הפיתוח ל-Chrome
אפשר להשתמש באפשרויות הבאות כדי לדון בתכונות ובשינויים החדשים בפוסט, או בכל דבר אחר שקשור לכלי הפיתוח.
- שלחו לנו הצעה או משוב בכתובת crbug.com.
- כדי לדווח על בעיה בכלי הפיתוח, לוחצים על אפשרויות נוספות > עזרה > דיווח על בעיות בכלי הפיתוח בכלי הפיתוח.
- אפשר לשלוח ציוץ אל @ChromeDevTools.
- אפשר לכתוב תגובות לגבי 'מה חדש' בסרטוני YouTube או בקטע 'טיפים לשימוש בכלי הפיתוח' בסרטוני YouTube.