כיצד לייעל את ביצועי התוכנית שלך?

מה שחשוב הוא כמה דוגמאות מחסנית מכילות את המשפט
מה שחשוב הוא כמה דוגמאות מחסנית מכילות את המשפט, ולא כמה פעמים סך הכל הוא מופיע.

אם אתה יכול להריץ את תוכנית הברגה היחידה שלך תחת ניפוי באגים או IDE, ואם יש דרך לעצור את ביצוע התוכנית בנקודת זמן שרירותית על ידי לחיצה על מקש או לחיצה על כפתור ב- IDE, יש פשוט מאוד ופשוט דרך יעילה להשריש בעיות ביצועים.

צעדים

  1. 1
    התחל את התוכנית שלך פועלת תחת הבאגים. אם זו סוג של תוכנית שבדרך כלל פועלת מהר מאוד, אבל אתה רוצה שהיא תעבור מהר יותר, אתה יכול להוסיף לולאה חיצונית זמנית של למשל, פי 1000, כדי לתת לך מספיק זמן לעצור אותה.
  2. 2
    בזמן שהוא איטי, עצור אותו ידנית. בצע זאת על ידי לחיצה על מקש הפסקה או הפסקה שגורם לתוכנית לעצור בכל מקום בו היא נמצאת. אל תעשה זאת על ידי הגדרת נקודת שבירה בקוד, כי אז לא תוכל לראות מה הוא עשה כשלחצת על המקש.
  3. 3
    הקלט את ערימת השיחות. מה שאתה צריך להקליט הוא הקובץ ומספר השורה של כל משפט על ערימת השיחה. אני מקווה שיש דרך קלה להעתיק ולהדביק את המידע הזה בעורך טקסט, אך אם לא, עשה זאת בדרך הקשה בעזרת נייר ועיפרון.
  4. 4
    הפעל אותו מחדש, עצור אותו שוב והקליט שוב. באפשרותך להמשיך בביצוע ממקום שהייתך, או להפעיל מחדש את התוכנית לחלוטין. כך או כך זה בסדר. אתה יכול לעשות זאת מספר פעמים, עד כ -20.
    מה שאתה צריך להקליט הוא הקובץ ומספר השורה של כל משפט על ערימת השיחה
    מה שאתה צריך להקליט הוא הקובץ ומספר השורה של כל משפט על ערימת השיחה.
  5. 5
    בדוק את דוגמאות ערימת השיחות עבור הצהרות נפוצות. יתכן שתועיל לקבץ את דגימות ערימת השיחות למבנה עץ מוטה, כך שתוכל לראות את המשותף בין דוגמאות. חשוב לזכור שאתה לוכד הצהרות ולא פונקציות. מספרי השורות באמת חשובים.
  6. 6
    בחן הצהרות המופיעות בערימות שיחות מרובות. אלה המועמדים שלך לאופטימיזציה. לדוגמה, אם קיימת הצהרה כלשהי בקובץ Foo.cpp, שורה 127, שבמקרה מופיעה ב 8 מתוך 20 דוגמאות, אז כדאי שתסתכלו טוב על הצהרה זו ותראו אם מה שהיא עושה באמת נחוץ, מכיוון שאם הייתם יכולים להיפטר מכך, תוכלו לחסוך כ -40% מזמן הביצוע.
  7. 7
    תקן את הבעיה. ותיהנו מהמהירות.
  8. 8
    עשו הכל שוב ושוב. עד שלא תוכל למצוא שום דבר אחר לייעל. רוב הסיכויים שהתוכנית שלך מהירה פי כמה ממה שהיה מלכתחילה.

טיפים

  • אל תדאגי לגבי רקורסיה. זה כאשר מדגם ערימת שיחות מציג יותר ממופע אחד של משפט מסוים. זה נחשב רק להופעה אחת. מה שחשוב הוא כמה דוגמאות מחסנית מכילות את המשפט, ולא כמה פעמים סך הכל הוא מופיע.
  • עשרים דוגמאות זה רק מספר עגול, וזה בצד הגבוה. אם אתה רואה הצהרה חשודה המופיעה בארבע מתוך חמש הדוגמאות הראשונות, אם זה משהו שאתה יכול להסיר, אינך צריך עוד דוגמאות מכיוון שמצאת אחת גדולה.
    בצע זאת על ידי לחיצה על מקש הפסקה או הפסקה שגורם לתוכנית לעצור בכל מקום בו היא נמצאת
    בצע זאת על ידי לחיצה על מקש הפסקה או הפסקה שגורם לתוכנית לעצור בכל מקום בו היא נמצאת.
  • ברגע שאתה חושד באמירה מסוימת, כדאי לך להבין יותר על מה שהיא עושה. דרך טובה לעשות זאת היא לקחת דוגמאות נוספות עד להצהרה זו, ואז תוכל לבחון את הנתונים ומצב התוכנית בשלב זה, עד שתבין לחלוטין מדוע ההצהרה הזו מבוצעת. ידיעת ה"למה "אומרת לך אם זה באמת הכרחי. לעתים קרובות זה לא, ואתה יכול לעקוף את זה.
  • לאחר שתעשה זאת מספר פעמים, כנראה שתזהה דפוס. הדפוס הוא שתוכניות עם ערימות שיחה עמוקות נוטות לקבל יותר הזדמנויות להאיץ. זה יכול להוביל אותך לאמץ סגנון תכנות מדולדל יותר, עם פחות שכבות של הפשטה.
  • לעמוד בפיתוי החזק לנחש, מכיוון שניחושים שגויים לרוב. ניחוש הוא כל הצהרה של הטופס "אולי זה X" או "אני חושב שזה X" או "בפעם האחרונה שזה היה X - חשבת על זה?" או "מחבר מומחה יוקרתי אומר לעתים קרובות שזה X". אל תפעל לפי ניחושים, אפילו לא משכילים. האם מנתח יכול לפעול כך? האם יכול טייס לפעול כך? אם תעקוב אחר ההליך כאן לא תצטרך לנחש, תדע מה לתקן, וכנראה שזה יהיה משהו שלעולם לא היית מנחש.

אזהרות

  • היו מוכנים לספקנות מצד מתכנתים אחרים שלא מאמינים שזה כל כך קל, או יעיל. הראה, אל תספר.
  • ניפוי דיבורים רבים עוצר רק את החוט המרכזי.

דברים שתזדקק להם

  • ניפוי באגים או IDE עם מקש או כפתור "הפסקה" או "הפסקה".
FacebookTwitterInstagramPinterestLinkedInGoogle+YoutubeRedditDribbbleBehanceGithubCodePenWhatsappEmail