ל-Zack DA

erezsh

New member
ל-Zack DA

בהמשך לדיוננו: ערכתי בדיקה קצרה - כתבתי ב-C קוד אשר קורא קובץ לזיכרון, מבצע עליו הרבה סריקות, ומדפיס את התוצאה לקובץ. מדובר בלולאה שקשה לבצע עבורה אופטימיזציות, כי היא מכילה גם קריאות שמירה לקובץ וגם קריאות כתיבה למסך, ואת אלו, כידוע, לא ניתן לייעל בקוד שלך. התוצאות - ללא אופטמיזציה: 16 דקות עם O2 - רק 7 דקות! עם O3 - כ-6 דקות (לא משנה כרגע הערכים המדויקים) שים לב שאף אחד מהם לא קומפל ב-Debug, אלא כולם ב-Release! אם הקובץ ללא אופטימיזציה היא מכיל גם Debugging, הוא כנראה בקלות היה יותר איטי מפי 3 (אולי אפילו פי 4). אם אתה באמת מעוניין אני גם אפרסם את הקוד עם תוצאות יותר מדויקות.
 

Zack DA

New member
היי ארז,

זה מאוד מעניין אותי. בכלל, אם תוכל להסביר מה ההבדלים המדויקים בין ה- flags השונים שאיתם אפשר לקמפל, זה יהיה מאמר נחמד ל- taglines של הפורום !
 

vinney

Well-known member
זה דרגות אופטימיזציה

לכל קומפיילר יש כמה דרגות אופטימיזציה, וחלוקה לאופטימיזצית זמן ואופטימיזציית מקום (אני מקווה שברור לך למה עושים את ההבדלה
) ככל שבוחרים בדרגה יותר גבוהה, ככה הקומפיילר מתאמץ יותר לצמצם ולעשות יעיל יותר, זה משפיע ישירות על זמן הריצה ודרישות מקום וזכרון של הקומפיילר בשלבי הקומפילציה. ההבדל בין דרגה נמוכה לדרגה גבוהה יכול להיות זמן קומפילציה פי כמה מונים יותר ארוך. בשביל תוכנית פשוטה זה זניח, בשביל פרוייקט של 40 מתכנתים מדובר בהבדל של יום - יומיים של BUILD שרץ
בגדול את הO4 עושים בRELEASE האחרון (לפני סייקל הבדיקות האחרון ז"א), חבל על הזמן של הקומפילציה, ממלא בשלבי הבדיקות השונים, יש כל מיני גרסאות DEBUG.
 
למעלה