חזרה
איך rustc הואץ בספטמבר: זמן הקומפילציה הממוצע ירד ב-4.57%
SiTech AI Team2 წთ. საკითხავი

איך rustc הואץ בספטמבר: זמן הקומפילציה הממוצע ירד ב-4.57%

מ-29 ביולי עד 28 בספטמבר 2026, זמן הקומפילציה הממוצע של rustc ירד ב-4.57%: מתוך 629 מדדי בנצ'מרק, 555 השתפרו ורק 74 הורעו. הסקירה פורסמה על ידי Nicholas Nethercote.

Nicholas Nethercote פרסם ב-30 בספטמבר סקירה נוספת של ביצועי מהדר Rust. חלפו חודשיים מהדוח הקודם, ובתקופה זו rustc הואץ באופן ניכר.

תוצאה כללית

לפי מדידות התקופה מ-29 ביולי עד 28 בספטמבר 2026, זמן הקומפילציה הממוצע ירד ב-4.57%. מתוך 629 מדדי בנצ'מרק, 555 השתפרו, רק 74 הורעו, ומספר בנצ'מרקים הראו ירידה דו-ספרתית באחוזים. המחבר מכנה תוצאה זו 'ים ירוק'.

rustdoc, Clippy ו-LLVM 23

האצה גדולה ב-rustdoc ביצע Noah Lev והסביר בפוסט נפרד כיצד השיג זאת. עבור Clippy הפעיל Jakub Beránek את PGO (#159642): זמן wall-time השתפר ברוב הבנצ'מרקים של Clippy, במקרה הטוב ב-18%.

Nikita Popov עדכן את גרסת LLVM המשמשת במהדר ל-LLVM 23 (#158734). עדכון LLVM בדרך כלל נותן האצה: זמן wall-time הממוצע בכל הבנצ'מרקים ירד ב-1.2%, וזה משמעותי לשינוי בודד.

borrow checker ו-trait solver חדשים

בערוץ Nightly הופעל borrow checker חדש בשם Polonius Alpha. הוא מדויק יותר ומקבל תוכניות תקפות מסוימות שהגישה הישנה דחתה, אך מבצע יותר עבודה ובמקרים בודדים גם מגדיל את זמן הקומפילציה. זה השפיע גם על ספריית serde הפופולרית. Jack Huey (#161938) הפך חישובי liveness לדרישה לפי צורך: עבור serde מספר ההוראות ירד ב-3-5%. ב-#163027 הוא שינה את מבנה הנתונים והאינליינינג, מה שנותן ירידה של פחות מ-1% ברוב הבנצ'מרקים.

ב-Nightly הופעל גם trait solver חדש, שעובד לאט בחלק קטן מהמקרים. Jana Dönszelmann כתבה פוסט מפורט על הביצועים שלו. השינויים של Nethercote (#160479, #160605, #160801, #160892, #161077, #161211) הפחיתו בחדות את זמן הקומפילציה בכמה קרייטים חריגים: במקום אחד ב-50%, במקום אחר ב-25%, במקום נוסף ב-15%, ובמבחן מאמץ אחד אפילו יותר.

xmakro וניתוח dataflow

תורם חדש xmakro הגיש כמה אופטימיזציות. ב-#157281 הוא שיפר את הטיפול ב-impl בעת בניית גרף ההתמחות: מספר המחזורים בכל הבנצ'מרקים ירד בממוצע ב-1.58%. ב-#158059 טעינת נתוני קומפילציה אינקרמנטלית הואצה (במקרה הטוב 6%), ב-#160473 הוא הפחית הקצאות במסלול obligations חם (2%), וב-#160268 החליף dispatch דינמי ב-static.

Nethercote שינה את אלגוריתם מעבר ה-CFG עבור ניתוחי dataflow (#160193). בקרייט cranelift-codegen לפונקציה אחת יש יותר מ-18,000 בלוקים בסיסיים: עם האלגוריתם הישן ניתוח EverInitializedPlaces דרש 1.5 מיליון קריאות עד fixpoint, ועם החדש 90,000. עבור בניית check של הקרייט הזה, זמן ה-wall-time ירד בכ-30%. ב-#160033 EverInitializedPlaces שופר עוד יותר, מה שהפחית את מספר ההוראות בבנצ'מרק match-stress ב-17%.

בין שאר השינויים נמצא #160535, שבו Chris Denton הגדיל את גודל המחסנית המוגדר כברירת מחדל (במקרה הטוב בכמעט 3%). Nethercote מתחיל מחר לעבוד ב-Hexcat על פרויקט לאופטימיזציה של ביצועי rustc.

SSiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.