ההבדל בין == ל=== וביצועים

בקטגוריה: טיפים והערות|יעילות|שפות תכנות

9 מאי 2010

בזמן האחרון גיליתי שיש הבדל מאוד מאוד משמעותי בין == ל=== מבחינת ביצועים.
ההבדל בגדול מבחינת השימוש הוא ש == משווה את הערך ו=== גם משווה את סוג המשנה. כך שלדוגמה string לא ריק == לtrue אבל לא === לtrue וכדומה.

החלטתי לבדוק את העניין ולראות האם זה משתלם להשתמש ב===, לדוגמה כאשר בודקים איזה string יש במשנה או משהו כזה.
מסתבר שבהשוואת מחרוזות יש שיפור של בין 20% ל400% במהירות!
זמן יקר ובהחלט בהחלט לא זניח. ככל שהמחרוזות היו יותר ארוכות כך ההבדלים היו יותר גדולים.
חשוב לציין שלא הצלחתי למצוא חוקיות מוחלטת של מתי זה יעיל מאוד ומתי זה יעיל פחות, אבל בגדול כל עוד אין סיבה לא להשתמש ב=== עדיף להשתמש בו :)

5 תגובות לההבדל בין == ל=== וביצועים

סמלון

שון לוי

31 מאי, 2010 בשעה 0:13

הי שי,
קראתי אבל לא כל כך הבנתי.
כשאתה משווה String עם == ועם === למה? ומה יוצא true או false?

סמלון

Shay | Exalted Web

31 מאי, 2010 בשעה 10:46

אוקי, כשתשווה string בעזרת == אז השוויונות הבאים נכונים:
"a" == "a"
"5" == 5
"5" == true
כולם יחזירו true. בהשוואה עם === רק הראשון יהיה true, כי רק שם המשתנים מאותו טיפוס משתנה מה שדורש פחות השוואות ולכן יותר מהיר.

סמלון

שון לוי

31 מאי, 2010 בשעה 11:46

5==true
נותן true? לא ידעתי.. :S

והבנתי.. תודה.. :)
זה בשפה ספציפית או בכל השפות עם משפטים בולייאנים?

סמלון

Shay | Exalted Web

31 מאי, 2010 בשעה 11:54

אני לא בטוח אם זה בכל השפות. אני יכול להגיד לך שברוב השפות שאני מכיר בכלל אי אפשר להשוות ביטויים מטיפוס שונה.

סמלון

שון לוי

31 מאי, 2010 בשעה 12:03

אני יודע מJava שאי אפשר נכון?
בגלל זה שאלתי..

טופס התגובה

קצת עלי

שמי שי ואני בונה אתרים וכיום חותך (מקודד) ומתכנת.
אני עובד אל מול התקן העולמי של W3C, ומתכנת בשפת PHP תוך שימוש בטכנולוגיות עדכניות, תוך שמירה על קוד שניתן לתחזוקה.
בין כישורי נמנים: PHP, SQL, (X)HTML, CSS (2-3), XML, JavaScript ( + jQuery) ועוד.

Zend Certified Engineer

  • דניאל: אחלה של מאמר. [...]
  • Shay | Exalted Web: אין סיבה שיהיו תווים מוזרים. פשוט שמור הכל בutf8, כולל את הdatabase, הhtml והphp, ואל תשכח להריץ שאי [...]
  • יונתן: אין לך בעיה עם תווים בעברית מהמסד? כל מה שאני שולף מוצג לי בתווים מוזרים.. [...]
  • Shay | Exalted Web: שמחתי לעזור :) [...]
  • יהונתן|YtsWeb: שי,תודה רבה על המאמר. חיפשתי באמת איך לחלק את העמודים בצורה טובה ושלא יראו 1000 מספרים. [...]

פרוייקט תכנות מונחה עצמים

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

קצת מידע

אחלק לפניכם את האתר לשלושה נושאים:

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