מהדר היא תוכנה הממירה קוד תכנות מחשב שנכתב על ידי מתכנת אנושי לקוד בינארי (קוד מכונה) שניתן להבין ולבצע על ידי מעבד מסוים. פעולת הטרנספורמציה קוד מקור לקוד המכונה נקרא "קומפילציה". כאשר כל הקוד הופך בפעם אחת לפני שהוא מגיע לפלטפורמות שמפעילות אותו, התהליך נקרא אוסף מראש (AOT) מראש.
באילו שפות תכנות משתמשות במהדר AOT?
שפות תכנות ידועות רבות דורשות מהדר הכולל:
- פורטרן
- פסקל
- שפת אסמבלי
- ג
- C ++
- סוויפט
לפני Java ו- C #, כל תוכנות המחשבים נערכו או פירשתי.
מה לגבי קוד המתפרש?
קוד המתפרש מבצע הוראות בתוכנית מבלי לחבר אותן לשפת מכונה. הקוד המתפרש מנתח את קוד המקור ישירות, משויך למחשב וירטואלי שמתרגם את הקוד עבור המכונה בזמן הביצוע, או מנצל את הקוד הידור מראש. Javascript בדרך כלל מתפרש.
קוד מורכב פועל מהר יותר מקוד שהתפרש מכיוון שהוא אינו צריך לבצע שום עבודה בזמן שהפעולה מתבצעת. העבודה כבר נעשית.
אילו שפות תכנות משתמשות במערך JIT?
ג'אווה ו- C # משתמשים במהדרים מהירים בזמן. מהדרים בדיוק בזמן הם שילוב של מהדרים AOT ומתורגמנים. לאחר כתיבת תוכנית Java, מהדר ה- JIT הופך את הקוד לקוד בייט ולא לקוד שמכיל הוראות למעבד פלטפורמת חומרה ספציפית. קוד התצורה אינו תלוי בפלטפורמה וניתן לשלוח אותו ולהפעיל אותו בכל פלטפורמה התומכת ב- Java. במובן מסוים התוכנית מורכבת בתהליך דו-שלבי.
באופן דומה, C # משתמשת במהדר JIT המהווה חלק מ- Runtime Common Language, המנהל את ביצוע כל יישומי NET. לכל פלטפורמת יעד יש מהדר JIT. כל עוד ניתן להבין את ההמרה של שפת ביניים לפי קוד הפלטפורמה, התוכנית פועלת.
יתרונות וחסרונות של קומפילציה AOT ו- JIT
אוסף קדומים לזמן (AOT) מספק זמן אתחול מהיר יותר, במיוחד כאשר חלק גדול מהקוד מבוצע בעת ההפעלה. עם זאת, הדבר דורש יותר זיכרון ויותר שטח דיסק. אוסף JOT חייב למקד לפחות פלטפורמות הביצוע האפשריות ביותר.
קומפילציה Just-in-time (JIT) מפרופיל את פלטפורמת היעד בזמן שהיא פועלת ומתכנסת מחדש תוך כדי תנועה בכדי לספק ביצועים משופרים. JIT מייצר קוד משופר מכיוון שהוא ממקד לפלטפורמה הנוכחית, אם כי בדרך כלל לוקח יותר זמן לרוץ מאשר קוד שהורכב על ידי AOT.