עבור לתוכן

לוקח יותר מדי זמן לגשת לקובץ XML בשרת

Featured Replies

פורסם

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

הקובץ שוקל ממש קצת וזה כולה 6 שורות (כולל התאגים)

להלן הקוד:


Dim m_xmlrprofileData As XmlTextReader
m_xmlrprofileData = New XmlTextReader("http://www.####.co.il/settings.xml")
m_xmlrprofileData.WhitespaceHandling = WhitespaceHandling.None
m_xmlrprofileData.Read()
m_xmlrprofileData.Read()
While Not m_xmlrprofileData.EOF
m_xmlrprofileData.Read()
If Not m_xmlrprofileData.IsStartElement() Then
Exit While
End If
m_xmlrprofileData.Read()
OnlineAddr = (m_xmlrprofileData.ReadElementString("online"))
MyVersion = (m_xmlrprofileData.ReadElementString("ver"))
End While
m_xmlrprofileData.Close()

אני עושה משהו לא נכון? קיימת דרך אחרת ויותר מהירה? תודה!

נערך על-ידי Zeev86

פורסם

על פניו נראה תקין, אני לא מכיר את XmlTextReader מספיק כדי לדעת. אתה יכול להוסיף בדיקות תזמונים פשוטות (תשתמש באובייקט Stopwatch ותדפיס את הזמנים שלוקח לעשות את הפעולות). לחילופין אתה יכול להוריד את הקובץ בנפרד באמצעות אובייקט WebClient כדי להוריד את ה-xml בנפרד ואז להזין אותו לxmltextreader כדי לבדוק כמה זמן לוקח כל דבר במדויק.

פורסם
  • מחבר

נראה מוזר. בדקתי בשרת ישראלי ובשרת אמריקאי, בשניהם לוקח בדיוק 15 שניות מהרגע שהקוד נכנס ללולאה של קריאת קובץ XML עד ליציאה. כל שאר הקוד לוקח לא יותר משניה.

עריכה:

עכשיו מבדיקה יותר מעמיקה, הלולאה עצמה לוקחת גם לא יותר משניה, כלומר ה15 שניות האלה נתקעות ב

m_xmlrprofileData.WhitespaceHandling = WhitespaceHandling.None

m_xmlrprofileData.Read()

m_xmlrprofileData.Read()

While Not m_xmlrprofileData.EOF

לאחר שWHILE מתחיל לפעולה כל הקוד ממשיך ומסתיים לאחר פחות משניה.

נערך על-ידי Zeev86

פורסם

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

פורסם
  • מחבר

הבנתי. תודה על העצה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים