04-03-2009, 15:39
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
Benchmark עבור שני מצבי error_reporting ושימוש ב-isset
שמתי לב שיש הבדל משמעותי במהירות ריצה כאשר משנים את מצב ה- error_reporting.
יצרתי קובץ שמדגיש את ההבדל בזמן ריצה בין מצב של error_reporting=E_ALL למצב של error_reporting=E_ALL & ~E_NOTICE.
את הבדיקות עשיתי על קוד שמבצע את הדברים הבאים:
- טוען מערך data שמכיל מידע שרירותי, שגודלו מוגדר בקבוע שנקרא "all_data_size".
- טוען מערך search שמכיל גם הוא מידע שרירותי. מערך ה-search מכיל members שדומים ל-members במערך data, והוא מכיל members אשר שונים מה-members במערך data. כמות ה-members השונים ניתן לקביעה באמצעות הקבוע שנקרא "diff_data_size".
גודלו של מערך ה-search ייקבע גם כן ע"פ הקבוע "all_data_size".
- טוען למערך retrieve את ה-members שאמורים להיות במערך data, ע"פ המפתחות של ה-members של המערך search.
בשני מצבי ה-error_reporting השונים, טענתי את המערך retrieve פעם אחת בלי isset, ובפעם האחרת עם isset.
הכל מוסבר בקובץ בצורה טובה אני מקוה.
יש גם קבוע בשם TIMES שסה"כ אומר ללולאת ה-for שמבצעת את בדיקת ה- execution time את כמות האיטרציות. אני קבעתי אותו ל-100 כי אני חושב שזה מספיק...
בסוף יש גם מסקנות שהסקתי מהדבר. המסקנה הסופית היא שתמיד צריך להשתמש ב- isset, זה יכול רק לייעל את הקוד ולעשות אותו נייד עבור מקומות בהם יש E_NOTICE מופעל (למרות שקשה לי להאמין שמקומות אלה קיימים, מלבד שרתים של מפתחי PHP ...).
המקרה היחידי שבו isset איטי יותר הוא כאשר כמות ה-members השונים הוא 0 או יחסית שואף ל-0. בכל אופן זה לא משפיע משמעותית על זמן הריצה, כי מדובר על סדר גודל של E-5 על המכונה הישנה שלי.
הקובץ, שתוכלו לבדוק בעצמכם:
error_reporting.php
נערך לאחרונה ע"י dorM בתאריך 04-03-2009 בשעה 15:42.
|