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

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



  #1  
ישן 05-03-2006, 21:15
  משתמש זכר Silver Strike Silver Strike אינו מחובר  
 
חבר מתאריך: 10.09.04
הודעות: 1,032
שלח הודעה דרך ICQ אל Silver Strike שלח הודעה דרך MSN אל Silver Strike
חיבור מחרוזות (StringBuilder) - בדיקת יעילות ודפדפנים

בעקבות ההודעה הזו - http://www.fresh.co.il/vBulletin/sh...400&postcount=7 החלטתי לבדוק שוב את עניין החיבור בין מחרוזות. פתחתי טופיק חדש מכיוון שהנושא של הטופיק הישן לא ממש התאים ולדעתי זה נושא שחשוב לדון בו בהקשר ליעילות קוד.

השתמשתי באותה המחלקה עם שלושת הבדיקות:
  • חיבור רגיל - "Variable = Variable + "String.
  • חיבור =+ - "Variable += "String
  • שימוש במחלקה שמוסיפה למערך איבר בכל איטרציה.


השינוי המהותי בין הבדיקה הזו והבדיקה הקודמת הוא שרשור מחרוזות כחלק מהגדרת המשתנה, שנראה כך:
קוד:
sStr = sStr + " " + sStr + " " + sStr + " ";

בשימוש =+:
קוד:
sStr += " " + sStr + " " + sStr + " ";

ובשימוש במחלקה:
קוד:
sString.add(" " + sStr + " " + sStr + " ");

(בנוסף, הקטנתי את מס' האיטרציות ל-100).

התוצאות השתנו במעט. תחת IE התוצאות היו אלו:
  • בשימוש רגיל - 193844 מילישניות.
  • בשימוש =+ - 609 מילישניות
  • בשימוש מחלקה - 422 מילישניות.
FF החליט לסיים את פעולת הסקריפט לאחר מס' שניות בטענה שנגמר לו הזיכרון.

אשמח לשמוע הערות ותוצאות שלכם מבדיקה של הדף (לוודא שזו לא בעיה מקומית אצלי).
הערה חשובה: הסקריפט גורם לתקיעה ארוכה ולזלילת משאבים מהמחשב ויכול לגרום לקריסת הדפדפן. (במיוחד אם אתם משתמשים באקספלורר )

https://2006-uploaded.fresh.co.il/2...05/51593702.htm
לצפיה במקור:
http://view-source:https://2006-upl...05/51593702.htm
הערה נוספת: במהלך הבדיקות ופרסום חוזר של ההודעה עשיתי טעות קטנה בסקריפט (לא ניקיתי את המחרוזת לפני הבדיקה השניה), מה שגרם ל-IE להתקע למשך פרק זמן ארוך ביותר (20 דקות) לפני שהבנתי שמזה הוא לא יצא - מה שמלמד אותי ש-IE הוא לא חכם במיוחד...


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


נערך לאחרונה ע"י Silver Strike בתאריך 05-03-2006 בשעה 21:45.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 05-03-2006, 23:05
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 1 שנכתבה על ידי Silver Strike שמתחילה ב "חיבור מחרוזות (StringBuilder) - בדיקת יעילות ודפדפנים"

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

לפי הבדיקות שעשית השרשור בשיטה הראשונה לוקח כ-3 דקות, או לפחות כ-2 דקות (בהרצת הקוד אצלי תחת אוונט-אקספלורר).
בנינו... לא ביצענו שרשור מחרוזות ארוכות בהרבה באותה שיטה ואף פעם לא ראינו את FF למצמץ ?! אז כנראה שהבדיקה לוקה משהו בחסר, צריך רק להבין למה ולמצוא היכן טמון הכלב (או הארנב - בשביל דור).
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 05-03-2006, 23:41
  GreenBerret GreenBerret אינו מחובר  
 
חבר מתאריך: 13.12.05
הודעות: 1,963
בתגובה להודעה מספר 1 שנכתבה על ידי Silver Strike שמתחילה ב "חיבור מחרוזות (StringBuilder) - בדיקת יעילות ודפדפנים"

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

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

אני יודע למי זה כן יכול לעזור, יש פורומים שנכתבים כך שכל התוכן מועבר לצד הגולש ומעובד שם בעזרת JS. (ראה ערך webmaster.org.il
וכמובן שזה יעזור לי, אני אשתמש בזה מעכשיו (או בעצם, מהפוסט הקודם), תודה רבה


ד"א, אני בעבודה, תקעת לי את המחשב עם הדף הזה.
יצאתי להפסקה.. חזרתי.. והוא עדיין לא סיים :\ (ככה שאפילו לא יצא לי לראות את הקוד מקור)
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 06-03-2006, 01:26
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 5 שנכתבה על ידי GreenBerret שמתחילה ב "אני מסכים עם שני הדברים..."

1. בענין פעולת השרשור - לא בדקתי את הקוד מקור, אך הגיוני שנעשה כאן פשוט תנאי הבודק אם תוכן המשתנה/ים הוא מחרוזת או מספר ובהתאם לכן מבוצע פעולת חיבור או שרשור.
2. הגם ולמרות שזה נעשה בצד הלקוח זה חשוב מאד, לעיתים רבות קוד JS בעל מספר שורות בודדות גורם לתקיעת הדפדפן אצל הלקוח ומשכנעו להמנע מהמשך הגלישה באתר...
אגב, במערכות מבוססות יותר על צד הלקוח (כגון JS + XML) זה כמובן נהפך להרבה יותר קריטי.

ובהמשך לדבריי מהודעתי לעיל, כתבתי מערכת מבוססת JS + XML שבה מנוע הדפדפן צריך לנתח קובץ XML המכיל כ-16,000 שורות קוד, לבצע עשרות לולאות בכל דף, ובמיוחד - מאות (אם לא אלפי) שרשורים למחרוזת אחת ארוכה המכילה כמעט את כל תוכן הדף (תוכן הדף מוצג רק לאחר סיום כל הפעולות). ולמרות שיש השהיה של כשניה (לעיתים יותר לעיתים פחות) זה לא מתקרב לתוצאות הבדיקות שמראות ששרשור מספר מחרוזות בודדות בשיטה הזאת נמשכות כ-180 שניות !
כך שזה די מוזר, וכמו שאמרתי, צריך להבין מה באמת גורם לקוד להיות איטי.

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

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

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

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

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



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

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

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

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