לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 07-03-2006, 00:28
  משתמש זכר Silver Strike Silver Strike אינו מחובר  
 
חבר מתאריך: 10.09.04
הודעות: 1,032
שלח הודעה דרך ICQ אל Silver Strike שלח הודעה דרך MSN אל Silver Strike
פניה לאובייקט עפ"י ה-id - בדיקת יעילות

בהמשך לדיון הזה: http://www.fresh.co.il/vBulletin/sh...671&postcount=5, החלטתי לעשות Test case נוסף.

והתוצאות הפתיעו אותי. ביצעתי בדיקה של 4 דרכים לפנות ל-id של אובייקט בדף.
  • שימוש בדרך המקובלת.
    קוד PHP:
     document.getElementById("element_id"); 
  • תפיסה של האובייקט document
    קוד PHP:
     var document;
    d.getElementById("element_id"); 
  • שימוש בפונקציה שמחזירה את הדוגמה המקוצרת.
    קוד PHP:
     function $(sId){
        return 
    d.getElementById(sId);

  • שימוש ב-Hash-Table
    קוד PHP:
     var Pool = {};
    function 
    Hash(sId){
        var 
    oValue Pool[sId];
        if(
    oValue) return oValue;
        else{
            
    oValue d.getElementById(sId);
            
    Pool[sId] = oValue;
            return 
    oValue;
        }
        return 
    d.getElementById(sId);


התוצאות ב-Internet Explorer:
  • בדרך המקובלת - 156 מילישניות
  • תפיסה של האובייקט documentי - 110 מילישניות
  • שימוש בפונקציה - 172 מילישניות
  • שימוש ב-Hash Tableי - 31 מילישניות

התוצאות ב-Firefox:
  • בדרך המקובלת - 156 מילישניות
  • תפיסה של האובייקט documentי - 141 מילישניות
  • שימוש בפונקציה - 157 מילישניות
  • שימוש ב-Hash Tableי - 31 מילישניות
(הבדיקה נעשתה עם איטרציה של 10,000 פעמים)


מה ניתן להסיק מהתוצאות:
  • שאני טעיתי כל הזמן הזה ( )
  • ההבדל בין הדפדפנים במקרה זה הוא קטן מאוד ובמקרים מסויימים לא קיים כלל.
  • ישנו שיפור בביצועים כאשר תופסים את האובייקט document
  • שימוש ב-Hash Table מהיר פי 5 מהדרך המקובלת

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

https://2006-uploaded.fresh.co.il/2...07/38157675.htm
לצפייה במקור (יש להעתיק את הקישור ולהדביק בשורת הכתובת של הדפדפן):
view-source:https://2006-uploaded.fresh.co.il/2...07/38157675.htm

שחר
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 07-03-2006, 01:27
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
מספר תוצאות ב-FF 1.5
בתגובה להודעה מספר 1 שנכתבה על ידי Silver Strike שמתחילה ב "פניה לאובייקט עפ"י ה-id - בדיקת יעילות"

קוד:
a *141ms. (document.getElementById(sId)) *171ms. (d.getElementById(sId)) *172ms. ($(sId)) *16ms. (Hash(sId)) b *203ms. (document.getElementById(sId)) *203ms. (d.getElementById(sId)) *172ms. ($(sId)) *16ms. (Hash(sId)) c *234ms. (document.getElementById(sId)) *172ms. (d.getElementById(sId)) *172ms. ($(sId)) *15ms. (Hash(sId)) d *140ms. (document.getElementById(sId)) *203ms. (d.getElementById(sId)) *157ms. ($(sId)) *0ms. (Hash(sId)) e *157ms. (document.getElementById(sId)) *234ms. (d.getElementById(sId)) *156ms. ($(sId)) *16ms. (Hash(sId))

לא מדובר בכל התוצאות או בסדר רציף, אלא במספר תוצאות שבחרתי להציג.
כמו שרואים מכאן, אף שיטה לא עקבית במהירות, ולעיתים דרך אחת מהירה מאחרת שהיתה מהירה יותר בפעם הקודמת. מלבד השימוש ב"טבלת האש", שעומד בד"כ על 15-16 ותמיד ! הכי מהיר, כך שנראה שהפונקציה HashElement תכנס ל-default.js הידוע שלמצה ותחליף את הדולר הישן (;

את התוצאות באקספלורר לא בדקתי לעומק, אך באופן עקבי שיטת האש נמשכה בד"כ זמן כפול ממה שמוצג כאן (כ-32 מילי שניות).

שחר, נראה לי שכשיוסיפו בפרש מודול לארגון ואיחזור המידע הרב שהספיק להצטבר באתר, יהיה קטגוריה מבחני benchmark שהספיקו לצבור כבר מספר נושאים.
המבחן הבא: האם JS אוהב יותר AMD או שהוא משוחד ע"י אינטל (;
לאחריו: 32 או 64 (סיביות כמובן) ?
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 08-03-2006, 02:53
  משתמש זכר Silver Strike Silver Strike אינו מחובר  
 
חבר מתאריך: 10.09.04
הודעות: 1,032
שלח הודעה דרך ICQ אל Silver Strike שלח הודעה דרך MSN אל Silver Strike
עדכון הבדיקה...
בתגובה להודעה מספר 1 שנכתבה על ידי Silver Strike שמתחילה ב "פניה לאובייקט עפ"י ה-id - בדיקת יעילות"

בעקבות ההערה של yytg החלטתי לשפר ולהרחיב מעט את הסקריפט (ועל כך, רוב תודות לו ).

הבדיקה המעודכנת מחולקת לשתיים:
  1. reference ל-10 אלמנטים (שוב ושוב) באיטרציה של 1,000
  2. reference ל-5000 אלמנטים (פעם אחת) באיטרציה של 5,000

לעניות דעתי הבדיקה הזו יותר נכונה מהקודמת, בעיקר עקב העובדה שרוב הפעמים נפנה ליותר מ-id אחד.
ומצד שני, מה התוצאה כאשר אנו לא מתבססים על אובייקטים שנלקח ה-reference אליהם (שימוש חד פעמי).

התוצאות ב-Internet Explorer:
קוד:
Caching 10 elements (repeatedly): * 55609ms. [document.getElementById(sId)] * 50562ms. [d.getElementById(sId)] * 50922ms. [$(sId)] * 78ms. [Hash(sId)] Caching 5,000 elements (once): * 26187ms. [document.getElementById(sId)] * 26485ms. [d.getElementById(sId)] * 26218ms. [$(sId)] * 26391ms. [Hash(sId)]


התוצאות ב-Firefox:
קוד:
Caching 10 elements (repeatedly): * 141ms. [document.getElementById(sId)] * 156ms. [d.getElementById(sId)] * 156ms. [$(sId)] * 63ms. [Hash(sId)] Caching 5,000 elements (once): * 18906ms. [document.getElementById(sId)] * 3563ms. [d.getElementById(sId)] * 218ms. [$(sId)] * 172ms. [Hash(sId)]


אני חייב לציין שהתוצאות שחזרו מ-IE הזויות למדי וייתכן שלא נכונות וקשורות לבעיה שטרם עליתי עליה...
מצד שני, ייתכן וזה קשור בדרך בה IE מייצר את הדף מה שגורם למנוע ה-JS שלו להגיע למצב over-load. דבר זה לא קרה ב-FF וחוץ מכמה שניות המתנה (ומספר פעמים שנאלצתי לאשר לו את המשך ביצוע הסקריפט [הוא התעקש שהביצוע לוקח יותר מדי זמן]) הכל התבצע חלק. אם למישהו יש רעיון למה זה קרה, אשמח לשמוע.

אשמח לשמוע הערות נוספות אם יש כדי לשפר את הבדיקה אף יותר
https://2006-uploaded.fresh.co.il/2...08/96722225.htm

מומלץ לטעון את הדף דרך IE רק לפני ארוחת צהריים/מקלחת/הכנת קפה, תה, שוקו וכו'
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה


נערך לאחרונה ע"י Silver Strike בתאריך 08-03-2006 בשעה 02:55.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 16:02

הדף נוצר ב 0.07 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר