ביצועי לולאות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C# של Coddy. שיעור 13 מתוך 66.
מיטוב ביצועי הלולאה יכול לשפר משמעותית את מהירות היישום שלך, במיוחד עם מערכי נתונים גדולים.
אחסן את אורך האוסף במשתנה לפני הלולאה:
int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // שמרו את האורך פעם אחת
for (int i = 0; i < length; i++) // השתמשו בערך השמור
{
Console.WriteLine(numbers[i]);
}הימנעו מקריאות חוזרות למתודות בתנאי לולאה, למשל:
for (int i = 0; i < GetCount(); i++)
{
// Loop body
}המתודה GetCount() נקראת בכל איטרציה של הלולאה. פירוש הדבר הוא שאם הלולאה רצה 1000 פעמים, גם GetCount() תבוצע 1000 פעמים, כי תנאי הלולאה נבדק לפני כל איטרציה.
כך עושים זאת נכון:
int count = GetCount();
for (int i = 0; i < count; i++)
{
// גוף הלולאה
}הפונקציה GetCount() נקראת פעם אחת בלבד לפני שהלולאה מתחילה, והערך שלה נשמר במשתנה count. לאחר מכן הלולאה משתמשת בערך השמור הזה בכל האיטרציות, וכך מתייתר הצורך לקרוא למתודה שוב ושוב.
הגישה הזאת יכולה לגרום לקוד שלך לרוץ מהר יותר על ידי צמצום פעולות מיותרות, במיוחד כשהשיטה שנקראת מבצעת חישובים מורכבים או ניגשת לנתונים.
אתגר
קלצרו מתודה בשם optimizedSum ש:
- מקבלת מערך של מספרים שלמים כפרמטר
- מחשבת את סכום כל האיברים
- מממשת גישה לא מיטבית וגישה מיטבית:
- לא מיטבית: קוראים ל־array.Length בכל איטרציה של הלולאה
- מיטבית: שומרים את האורך במטמון לפני הלולאה
- מחזירה את התוצאה מהגישה המיטבית
נסו בעצמכם
public class OptimizedSum
{
// ממשו את המתודה optimizedSum
public static int optimizedSum(int[] numbers)
{
// כתבו כאן את הקוד שלכם
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםהכרזה ואתחול של מערכים דו־ממדייםגישה לאיברי מערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםמערכים משונניםפעולות מטריצה נפוצותחזרה – מערכים רב־ממדיים7אופרטורים לוגיים מתקדמים
הערכה בקיצור דרךאופרטורים לוגיים מותניםקדימות אופרטוריםסיכום – אופרטורים מתקדמים2קבלת החלטות מתקדמת
תנאים מרוביםלוגיקה בוליאנית מורכבתהשוואה בין If ל-Switchהצהרות Switch מקוננותסיכום — קבלת החלטות מתקדמת5טיפול בחריגות
יסודות try-catchסוגי חריגותבלוקי catch מרוביםעבודה עם קבציםבלוק finallyשימוש ב-using לעומת try-finallyחריגות מותאמות אישיתסיכום – טיפול בשגיאות3שיפורים בלולאות
ביצועי לולאותאיטרציה במבנים מורכביםכל אחד מסוגי הלולאותרפקטורינג של לולאותסיכום – לולאות שעברו אופטימיזציה6טיפול בערכי Null
יסודות הפניה ל-Nullטיפוסי ערכים שניתנים ל-Nullדפוסי בדיקת Nullתכנות הגנתיסיכום – בטיחות מול Nullתרגלו בעצמכם: קומפיילר C# אונליין