פורסם 2014 באוגוסט 611 שנים קראתי במקור מסוים שהפיכתן של פונקציות TEMPLATE לINLINE מקטינה את ניפוח הקוד לא הבנתי כיצד? תודה לעוזרים
פורסם 2014 באוגוסט 611 שנים פונקציות טמפלייטיות חייבות להיות inline, דהיינו צריך לשים את כל הקוד של הפונקציה בתוך קובץ ה-header (ובעצם אין קובץ cpp).אתה יכול אולי לתת את ההסבר המדויק שקראת?
פורסם 2014 באוגוסט 611 שנים מחבר http://prntscr.com/4a4p4xבקישור תמונה של ההסבר(לא ארוך)תודה על העזרה
פורסם 2014 באוגוסט 611 שנים מה ש-inline עושה הוא לומר לקומפיילר "אם אתה יכול, תחליף את הקריאה לפונקציה בקוד עצמו". בדוגמה הזו, הקריאה לפונקציה (myswap(i1,i2 תוחלף ממש בשלוש שורות הקוד: temp=i1;i1=i2;i2=temp;כיוון שחוסכים קריאה לפונקציה, הקוד הזה אמור להיות יותר יעיל. השימוש ב-inline יכול לגרום לקצת ניפוח של קוד (מדובר כאן בקוד הבינארי שנוצר אחרי הקומפילציה), כי בכל מקום שבו הפונקציה נקראת, אמורים להחליף את הקריאה בכל התוכן שלה. מצד שני, חוסכים את התקורה של הקריאה לפונקציה (שברמת שפת המכונה מתבטאת בעוד כמה שורות קוד). ולכן אם מדובר בפונקציה עם מעט מאוד שורות זה יכול לגרום לכך שהקוד הבינארי דווקא יצטמצם.אתה יכול לקרוא עוד בנוגע ל-inline כאן:http://www.parashift.com/c++-faq/inline-and-perf.html
פורסם 2014 באוגוסט 611 שנים מחבר אוקיי אז ניראה לי הבנתי בעצם הגדרת הפונקצייה כINLINE במקרה הנ"ל תחסוך את הקריאות לעותקים שיווצרו בעת ההידור(כשיבנו ההתאמות לתבניות עם טיפוסי משתנים) תודה
פורסם 2014 באוגוסט 911 שנים בסטנדרטים החדשים inline זו רק המלצה לקומפיילר. בפועל, הקומפיילר עושה את האופטימיזציה הכי טובה ללא קשר אם יש או אין הכרזה כזו.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.