webForumDet fria alternativet

Kass prestanda vid inläsning av XML?

.NET

5 svar · 519 visningar · startad av CokeLight

Medlem sedan juni 2000504 inlägg
Frågan#1

Hejsan,

Jag har använt enbart XmlDocument, XmlNode, XmlNodeList o sen kört SelectSingleNode/SelectNodes metoder för att bygga HTML tabell a la classic ASP stil (med for loopar etc). XML filen är rätt liten, ca 1 MB. Det ser okay ut men går olidligt långsamt !! hehe.. nu är jag medveten om att det förmodligen är jag som kodat osmidigt, men jag undrar ändå om det finns vissa "knep" för att förbättra prestanda? Kan man cacha, läsa in i minne etc eller nåt? Nån som dessutom vet om det blir snabbare om man använder XslTransform, XPathNavigator etc.. eller är det bara andra sätt att göra samma sak på..?

Håller på att läsa lite teori just nu men har inte stött på just att de tar upp prestanda.. Om nån har lite tips/teori blir jag glad.. :)

Medlem sedan maj 20012 812 inlägg
#2

XML är långsamt, bara att inse. XMLDocument är dessutom ännu långsammar än tex XMLDataReader.

Nu är jag ingen expert på XML objekten och har faktiskt knappt använt de någon gång, men mitt tips till dig blir att inte hålla på med dessa och forloppar utan göra något annat.

Nu vet jag inte hur ditt XML ser ut, men tips kan vara att serializera det till typ ett dataset och opererar på det, eller egna objekt som du kan opererar på. Detta bör hjälpa dig med att få till prestandan.

- M

Medlem sedan juni 2000504 inlägg
#3

.. serialisera till dataset.. okay, tack.. jag provar med det..! Först försökte jag använda XmlDataSource och läsa in det till en GridView men fick det inte o funka (höll inte på så länge iofs)..

sen var det nån som föreslog att man kunde generera HTML sidor etc (för att garantera att det inte blev några prestanda problem).. det finns inga krav på omedelbara uppdateringar, men nackdelen är väl kanske att det blir lite svårare att söka, sortera kolumner etc.. hmm.. men jag ska prova med att få in det i dataset först som du sa..

Medlem sedan maj 20012 812 inlägg
#4

sen var det nån som föreslog att man kunde generera HTML sidor etc

Ur prestandasynpunkt så är det absolut att föredra. Alltså statiska sidor som presenteras, bättre prestanda än så får du aldrig :)

Men visst, du lär ju inte kunna sorterar i kolumner eller söka ut och visa delelement ur din XML data.

Men du kan söka ur dina statiskt sidor med hjälp av IndexServer som följer med windows...

Kan du inte lägga information i en databas istället för en XML-Fil, det kommer att höja din prestanda markant...

- M

Medlem sedan dec. 19996 522 inlägg
#5

Använd dig av XmlTextWriter samt XmlTextReader, snabbaste du kan gå på .net sidan när det gäller läsa och skriva XML.

Medlem sedan juni 2000504 inlägg
#6

hejsan, såg inte att det kommit nya inlägg.. :)

okay, Index Server har jag sneglat på nån gång fast aldrig provat.. sen vad gäller att läsa in XML till DataSet o databas är det jag håller på med nu.. fast jag är lite osäker på tillvägagångssätt.. det verkar oundvikligt att man måste använda schemas (xsd filer) (?) så jag håller på o läser om hur man gör schemas.

Som jag fattade det så vet varken DataSet eller Databas hur de ska mappa element och attribut till tabeller/kolumner etc utan schemas.. stämmer det..?? Jag trodde att man kunde köra en wizard i VS, ange en XML fil o sen vips så hade den själv räknat ut..? :)

(Iofs, när jag gjorde en väldigt enkel XML med typ, <MinaBilar> :) var det inga problem att använda XmlDataSource o presentera med t.ex. DataList eller GridView.. så detta borde fungera även med min "riktiga" XML antar jag om jag testar lite mer.. )

Det som var knepigt var första hand inte syntax utan att veta vilken strategi (eller vad man ska kalla det) som var lämpligt just nu.. känner mig lite stressad eftersom det tog längre tid än vad jag trodde =) Jag är t.ex. lite förvirrad vad (eller om det är) nån skillnad mellan att läsa in XML till Dataset o sen binda den till t.ex. Datagrid (eller nåt annat) kontra att använda XmlDataSource (2.0) o knyta den till t.ex. Gridview? Är syftet olika..? DataSet är väl för att man vill jobba med Disconnected data.. är det samma med XmlDataSource o.d.? Utöver detta, om man har möjlighet, är det bättre att läsa in i databas med en gång..?

261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)