מיטוב אלגוריתמים – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מ תיקון, בהתאם לשינוי השם
Yonidebot (שיחה | תרומות)
מ בוט החלפות: לעתים;
שורה 1:
'''מיטוב''' (בלעז: אופטימיזציה) הוא ענף ב[[מדעי המחשב]] העוסק בייעול [[אלגוריתם|אלגוריתמים]] ושיפור [[סיבוכיות זמן ריצה|זמן ריצתם]], תוך שמירה על רמה סבירה של דיוק.
 
אופטימיזציה מבוצעת ברמות שונות של הפשטה וראייה כוללת, ועל ידי גופים שונים. הרמה הבסיסית ביותר של האופטימיזציה נעשית על ידי ה[[מעבד]] עצמו. המעבד רואה רק את קטעי ה[[קוד]] שזמן ביצועם קרוב. אופטימיזציה התלויה במעבד היא למשל זכירה של היסטוריית הריצה (למשל: איזה מבין ענפי תנאי נלקח לעיתיםלעתים קרובות יותר), ופעולה על פי ניבוי המבוסס על ההיסטוריה של הפעולות האחרונות.
 
ה[[מהדר]] מבצע אופטימיזציה של סידור שורות קוד ויצירתן. למשל, המהדר יכול להחליט לכתוב קוד מסוים מספר פעמים. על ידי כך גדל גודל ה[[קובץ]] המכיל את הוראות הביצוע, אך מספר הקפיצות בתוך הקובץ קטן. המעבד יכול, בראיית על של מספר פונקציות, לגלות כי לא נעשה שימוש בפונקציה מסוימת, ולא לעבדה כלל. הוא יכול להחליף [[משתנה (תכנות)|משתנים]] בקבועים או לגלות כי משתנים מסוימים אינם נחוצים.
שורה 7:
המהדר יכול גם לבצע אופטימיזציות אשר משנות את תוצאות החישוב. למשל, המהדר יכול לוותר על שמירת תוצאות ביניים של חישוב ארוך. במקום, הוא יכול להורות למעבד לבצע את כל החישוב בלי לשמור אותו ל[[זיכרון גישה אקראית|זיכרון]] בדרך. אופטימיזציה כזו, המכונה [[הלחמה (מדעי המחשב)|הלחמה]], עשויה לשנות את התוצאה הסופית בפעולות על מספרי [[נקודה צפה]], בייחוד על ארכיטקטורת [[אינטל]] אשר מקדישה 80 [[ביט]] לייצוג מספר בתוך המעבד, אך רק 64 ביט לייצוג מספר נקודה צפה בזיכרון.
 
האופטימיזציה המקיפה ביותר, הכוללת ראיית על של התהליך כולו, היא האופטימיזציה שמבצע האדם, מתכנן ה[[אלגוריתם]]. בשלב זה של האופטימיזציה יש מקום לשיפורים משמעותיים בביצועים, לעיתיםלעתים אפילו של סדרי גודל.
 
[[פרופיילר]] (Profiler) הוא תוכנה המהווה כלי עזר חשוב בביצוע האופטימיזציה. מעקב אחר הזמן ש"מבלה" התוכנה בחלקים השונים של הקוד מספק למתכנת מידע על הנקודות בהן שיפור קטן באלגוריתם יניב שיפור גדול בביצועים, על פי מספר הפעמים שאותו קטע קוד רץ במהלך ריצה אופיינית של התוכנית.