בנית-אתרים.com – בלוג בנית אתרים
בקטגוריה: טיפים והערות|יעילות|שפות תכנות
9 מאי 2010בזמן האחרון גיליתי שיש הבדל מאוד מאוד משמעותי בין == ל=== מבחינת ביצועים.
ההבדל בגדול מבחינת השימוש הוא ש == משווה את הערך ו=== גם משווה את סוג המשנה. כך שלדוגמה string לא ריק == לtrue אבל לא === לtrue וכדומה.
החלטתי לבדוק את העניין ולראות האם זה משתלם להשתמש ב===, לדוגמה כאשר בודקים איזה string יש במשנה או משהו כזה.
מסתבר שבהשוואת מחרוזות יש שיפור של בין 20% ל400% במהירות!
זמן יקר ובהחלט בהחלט לא זניח. ככל שהמחרוזות היו יותר ארוכות כך ההבדלים היו יותר גדולים.
חשוב לציין שלא הצלחתי למצוא חוקיות מוחלטת של מתי זה יעיל מאוד ומתי זה יעיל פחות, אבל בגדול כל עוד אין סיבה לא להשתמש ב=== עדיף להשתמש בו
שמי שי ואני בונה אתרים וכיום חותך (מקודד) ומתכנת.
אני עובד אל מול התקן העולמי של W3C, ומתכנת בשפת PHP תוך שימוש בטכנולוגיות עדכניות, תוך שמירה על קוד שניתן לתחזוקה.
בין כישורי נמנים: PHP, SQL, (X)HTML, CSS (2-3), XML, JavaScript ( + jQuery) ועוד.
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 שאי אפשר נכון?
בגלל זה שאלתי..