בנית-אתרים.com – בלוג בנית אתרים
בקטגוריה: טיפים והערות|יעילות|שפות תכנות
29 אפר' 2010החלטתי היום לבצע מבחן, רציתי לבדוק מה מהבאים הכי מהיר ובאיזה הפרש.
המועמדים הם:
כתבתי את כל אחד מהקודים, הפונקציה בסך הכל מחשבת 1+1.
כל אופצייה נקראה 1,000,000 פעמים (בלולאת for) וכך קיבלתי תוצאות זמן די מדוייקות. התוצאות היו עקביות מאוד בין הרצה להרצה.
התוצאות מעט הפתיעו אותי!
פונקציה פשוטה: 0.38151597976685 שניות. (נסמן ב100%)
מחלקה רגילה: 0.97387981414795 שניות. 255% מפונקציה פשוטה!
פעולה סטטית: 1.8012449741364 שניות. 472% מפונקציה פשוטה!
Singleton וקריאה רגילה: 3.3634400367737 שניות. 881% מפונקציה פשוטה!
התוצאה של פונקציה פשוטה ממש לא הפתיע אותי ביחס לשאר, אך האיטיות של פעולה סטטית הפתיעה אותי מאוד. האמנתי שהתוצאות של מחלקה רגילה ושל פעולה סטטית יהיו הפוכות.
המבחנים בוצעו על wamp עם php 5.3.0, במחשב עם מעבד אינטל פנטיום 4 במהירות 3.2GHz ו1GB זכרון.
את הקבצים שאיתם ביצעתי את ההשוואה תוכלו להוריד.
שמי שי ואני בונה אתרים וכיום חותך (מקודד) ומתכנת.
אני עובד אל מול התקן העולמי של W3C, ומתכנת בשפת PHP תוך שימוש בטכנולוגיות עדכניות, תוך שמירה על קוד שניתן לתחזוקה.
בין כישורי נמנים: PHP, SQL, (X)HTML, CSS (2-3), XML, JavaScript ( + jQuery) ועוד.
4 תגובות לביצועים – פונקציות, OOP וסטטיות
דב
29 אפריל, 2010 בשעה 23:45
בקובץ עם המחלקה הרגילה ההצהרה על המחלקה נמצאת מחוץ ללולאה
בפונקציה הסטטית מתבצע הכרה של המחלקה כל פעם מחדש בתוך הלולאה
Shay | Exalted Web
29 אפריל, 2010 בשעה 23:53
נכון.. זה גם די הגיוני מבחינת מה שניסיתי לבדוק (מה הדרך הטובה ביותר לקבץ פעולות).
מה שכן יצא לי לבדוק גם את המצב שהיא מוצהרת בלולאה. זה מעלה את הזמן ככה שזה בערך באמצע בין מחוץ ללולאה למחלקה סטטית.
מור
2 נובמבר, 2010 בשעה 15:17
כלומר כאשר אני בונה מחלקה ובתוך פונקציות , הפונקציות בתוך המחלקה יהיהו איטיות יותר מאשר פונקצית שימצאו מחוץ למחלקה?
Shay | Exalted Web
2 נובמבר, 2010 בשעה 15:57
כן, מצד שני אתה צריך לזכור שזמן ריצה זה לא הגורם היחיד.
בטח שלא כאן, הוא לא מאוד משמעותי וכן מקל על הפיתוח מאוד.