לוקח יותר מדי זמן לגשת לקובץ XML בשרת - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


Zeev86

Recommended Posts

אהלן. אני מאחסן כמה נתונים בשרת בקובץ 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()

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

קישור לתוכן
שתף באתרים אחרים

על פניו נראה תקין, אני לא מכיר את 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 מתחיל לפעולה כל הקוד ממשיך ומסתיים לאחר פחות משניה.

קישור לתוכן
שתף באתרים אחרים

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...