הנך נמצא: מדריך מתקדם / שיעור 5 / דף 6
 


המדריך של תאו ל- JavaScript
 


דפים בשיעור זה:
1: JavaScript מתקדם
2: הדפסת משתנים
3: טעויות תכנות נפוצות
4: תיקון באגים
5: תרגול קידוד טוב
6: ייעול ה-JavaScript
7: מה קורה הלאה?
|
|
|
|
|
|
|
|

שיעור 5

דף 6: ייעול ה-JavaScript שלך מבחינת מהירות.

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

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

הגבל את כמות העבודה שאתה עושה בתוך לולאות.

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

var index = 0;
while (index <10)
{
  var the_date = new Date();
  var the_day = the_date.getDay();
  var the_name = prompt("what's the kid's name? " ,"");
  alert("On " + the_day + " " + the_name + " is a very special person.");
  index++;
}

תכנית זאת מסתובבת 10 פעמים בתוך הלולאה. כל פעם היא מבינה איזה יום זה, מבקשת את שם הילד, ואז מדפיסה "ביום שני, שם הילד הוא בן אדם מיוחד מאוד".

אבל היום אף פעם אינו משתנה. היום, הוא תמיד היום. אין שום צורך לשים את שתי השורות הראשונות בתוך לולאה. במקום להפעיל אותן 10 פעמים, הוצא אותן מהלולאה וחסוך זמן ע"י הפעלתן פעם אחת בלבד:

var index = 0;
var the_date = new Date();
var the_day = the_date.getDay();
while (index < 10)
{
  var the_name = prompt("what's the kid's name? " ,"");
  alert("On " + the_day + " " + the_name + " is a very special person.");
  index++;
}

סדר את פקודות if-then-else מהכי שכיחות להכי נדירות.

בגלל שפקודות if-then-else מסתיימות ברגע שהן מוצאות משהו נכון, אתה יכול לצמצם את מספר הפקודות אשר מופעלות ע"י כך שתשים את אלו שהכי סביר שיהיו נכונות בהתחלה:

var pet = prompt("what kind of pet do you have?", "");
if (pet == "cat")
{
  doCatStuff();
} else if (pet == "dog")
{
  doDogStuff();
} else if (pet == "bird")
{
  doBirdStuff();
} else if (pet == "lizard")
{
  doLizardStuff();
}

בממוצע, רשימת ה- if תבצע פחות מבחני לוגיקה כך, מאשר אם הייתה הולכת מ- lizard ל- dog.

צמצם ככל האפשר ביטויים החוזרים על עצמם.

אם אתה מוצא את עצמך חוזר ומחשב ביטוי ספציפי, כמו var pi = 22/7, ככל הנראה עדיף לחשב זאת פעם אחת בלבד ולגשת אליו כאל משתנה גלובלי. לדוגמא, במקום:

function theArea(radius)
{
  var pi = 22/7;
  var area = pi * radius * radius;
  return area;
}

function theCircumference(radius)
{
  var pi = 22/7;
  var circumference = 2 * pi * radius;
  return circumference;
}

עשה כך:

var pi = 22/7;

function theArea(radius)
{
  var area = pi * radius * radius;
  return area;
}

function theCircumference(radius)
{
  var circumference = 2 * pi * radius;
  return circumference;
}

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

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

חזור לתחילת הדף

לדף הבא «--

 
       
       
   
 
 

עמוד ראשי
מדריך בסיסי
מדריך מתקדם
החלפת תמונות
גניבת קוד
מפת האתר