21. juli 2004 - 17:55Der er
11 kommentarer og 1 løsning
Langsom ved inlæsning af xml i dataset
Jeg har en xmlfil med omkring 6000 poster (afstemning). Jeg har lagt mærke til at siden bliver langsommere og langsommere efterhånden som antallet af poster stiger.
Jeg vil høre om der er en hurtigere måde at læses et xml dokument end nedenstående?
public function stemtotal(stemtid as string) as integer Dim filnavn as string Dim udtryk as string
try filnavn = ConfigurationSettings.AppSettings("server") & ConfigurationSettings.AppSettings("write") & "afstemninggivet/" & stemtid & ".xml" catch t as exception return 0 exit function end try
dim filInfo as new fileinfo(filnavn) if NOT filinfo.exists() then return 0 exit function end if
Dim ds as new DataSet() Dim Dt As DataTable Dim Dr As DataRow()
try ds.ReadXml(filnavn) catch t as exception return 0 exit function end try
Dt = ds.Tables(0) Dr = Dt.Select("afid<>'0'") return cint(Dr.length) end function
hmmm opretter du en ny xml post hver gang en person stemmer???? Så er det da klart at det tager tid. Her er et udsnit af en quickpoll jeg har lavet for noget tid siden:
En mulighed du kraftigt bør overveje er at gemme xml dokumentet i cachen og lægge en dependency på. På den måde vil du kunne skulle læse dit xml dokument når der er sket ændringer, og altså ikke hver gang siden skal vises. Et godt sted at starte: http://aspnet.4guysfromrolla.com/articles/121802-1.aspx
Ok - kigger lige på det senere - grunden til at jeg opretter en post for hver gang er at jeg tjekker folk på deres ipadresse - skal jo ikke kunne stemme mere end en gang - har haft problemer med tæppebomning af afstemninger hvor en person stemte 3000 gange :-) - men kigger lige på ovenstående senere
Lige i samme forbindelse - hvordan opdaterer man en post i en xmlfil?
hvis du logger ip-nummeret er det så ikke væsentlig hurtigere at konvertere til en DB? Det giver ikke god performence at læse hele XML op i DataSet - specielt ikke når det er så mange poster.
Desuden er ip-log ikke så fedt for folk som sidder bag en proxy. Så er der kun én i et helt firma som må stemme ;-)
repsak, det er jo den eneste mulighed. Med cookies kan ham det ene kvaj jo bare slå cookies fra. Nej så er det mere fristende at gemme ip'erne i serverens hukommelse. Så glemmer den dem godt nok hver gang serveren genstartes, men det er jo i de fleste tilfælde yderst sjældent det sker.
hehe jeg vil under ingen omstændigheder anbefale brug af XML når det handler om så mange data der skal indlæses ofte. For mig at se er der ingen fordele. Men hvis I har nogle grunde så er jeg meget interesseret :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.