פורסם 2014 במאי 2811 שנים אהלן. אני מאחסן כמה נתונים בשרת בקובץ 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()אני עושה משהו לא נכון? קיימת דרך אחרת ויותר מהירה? תודה! נערך 2014 במאי 2811 שנים על-ידי Zeev86
פורסם 2014 במאי 2811 שנים על פניו נראה תקין, אני לא מכיר את XmlTextReader מספיק כדי לדעת. אתה יכול להוסיף בדיקות תזמונים פשוטות (תשתמש באובייקט Stopwatch ותדפיס את הזמנים שלוקח לעשות את הפעולות). לחילופין אתה יכול להוריד את הקובץ בנפרד באמצעות אובייקט WebClient כדי להוריד את ה-xml בנפרד ואז להזין אותו לxmltextreader כדי לבדוק כמה זמן לוקח כל דבר במדויק.
פורסם 2014 במאי 2911 שנים מחבר נראה מוזר. בדקתי בשרת ישראלי ובשרת אמריקאי, בשניהם לוקח בדיוק 15 שניות מהרגע שהקוד נכנס ללולאה של קריאת קובץ XML עד ליציאה. כל שאר הקוד לוקח לא יותר משניה.עריכה: עכשיו מבדיקה יותר מעמיקה, הלולאה עצמה לוקחת גם לא יותר משניה, כלומר ה15 שניות האלה נתקעות ב m_xmlrprofileData.WhitespaceHandling = WhitespaceHandling.None m_xmlrprofileData.Read() m_xmlrprofileData.Read() While Not m_xmlrprofileData.EOFלאחר שWHILE מתחיל לפעולה כל הקוד ממשיך ומסתיים לאחר פחות משניה. נערך 2014 במאי 2911 שנים על-ידי Zeev86
פורסם 2014 במאי 2911 שנים זה לא אומר כלום, כי יכול להיות שההורדה של הקובץ מתבצעת רק אחרי ה-Read הראשון. בגלל זה הצעתי לך להוריד בנפרד באמצעות WebClient. יכול להיות גם שהוא מנסה לעשות כל מיני בדיקות מול xsd וכאלה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.