ארכיטקט-ידיים-מלוכלכות, מס’ 4 – קומפילציה דינאמית הורגת את המפתחים
לקוח התלונן על תחנות פיתוח איטיות, כל כך איטיות שביצוע קומפילציה לוקחת עד כמה דקות. תאר לעצמך שמפתח מבצע מספר קומפילציות ביום כפול מספר דקות של איטיות… יוצא לא מעט זמן אבוד, כפול מספר לא מבוטל של מפתחים… יוצא טונה זמן אבוד. לא נעים, הא?
בהתחלה חשבנו על איטיות ב-Backend ומהר מאד ראינו שזה לא המקרה. השתמשנו ב-Netmon לצורך כך.
אחרי כמה הרהורים חשבנו כי הזמן מתבזבז על Serialization או Dynamic Compilation. במקרה הזה מופעל CSharp Compiler – פעולה לא הכי קלה בעולם.
כדי לנטר פעילות של ה-Compiler השתמשנו בכלי חינמי מצויין – Procmon. פילטרנו אותו להאזין לתהליך של w3wp.exeכאשר הוא ניגש ל-csc.exe, הקומפיילר. זה מה שראינו:
האם גם אתה מזהה פער של 3 שניות בין שתי שורות האחרונות? שורה לפני האחרונה – תחילת ריצה של קומפיילר, ושורה אחרונה דיווח לוג על סיום הריצה של קומפיילר.
את התמונה הזו ראינו 18 פעם, תכפיל ב-3 שניות כל אחת – קיבלת איטיות של דקה, בום!
כשפתחנו את הקוד – ראינו הפעלה ישירה של ComileAssmeblyFromDom.
המטרה הארכיטקטונית הייתה ברורה – ליצור גמישות יתר. הגמישות פגעה בפרודוקטיביות של מפתחים.
אז מי הלקוח כאן? :)
שירותי MCS רלוונטיים
חומר רלוונטי
שמי אליק לוין ואני מתרכז ב- Architecture, Security, and Performance באפליקציות Net.
בזמני הפנוי אני מפתח את עצמי בתחומים רבים אחרים.
This template is made with PracticeThis.com plugin for Windows Live Writer