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

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