30. juni 2005 - 12:17Der er
10 kommentarer og 2 løsninger
optimering af dataset og listbox
Hey folks,
Først vil jeg lige sige at jeg ikke har ret mange ugers erfaring med C#, så ville være rart med gode forklaringer og ikke bare stikord :D
Mit problem er at jeg har en listbox med zipcodes som hentes i et dataset. Dette tager ca 10 sekunder i IE og ½ sekund i Firefox. Hvordan kan dette optimeres:
Det kan ikke optimere meget mere. En lille ting du kunne optimere på var at lave en business entitet i stedet for at bruge DataSet men det er meget lidt du vinder der. En business entitet er blev et array af små klasser:
class ZipCodeClass { int zipcode = -1;
public int ZipCode { get zipCode; set zipCode; } }
Men det er så lidt du vinder her at jeg vil mene det er ubetydeligt. Så hvis du vil vinde noget skal du skaffe en hurtigere database.
Jeg tror ikke det er databasen der er langsom. Firefox formår at renderer siden på ½ sekund, men på IE tager det 10 sekunder. Det er ikke det at få fyldt datasettet der tager tid, men at fylde data over i listboxen.
Ja det lyder utroligt nok men alligevel ikke overraskende. Ikke første gang at IE ikke har kunne leve op til konkurrenternes produkter. Men hvis vi kigger på alternativer så skal du sidde og tilføje enkelte items af gangen frem for en datasource og det vil ikke gøre det hurtigere. Så din kode er fin så hvis du skal have en optimering på du nok kigge efter andre browserere eller måske prøve med en anden kontrol. Kunne være sjovt at se hvordan et dataset ville opføre sig.
SqlDataReader skulle være hurtigere end at bruge DataSet og derefter binde det, det er i hvert fald hvad jeg har forstået på de artikler og folk jeg har lyttet på gennem tiden... Men du kunne jo prøve med en SqlDataReader, og se om det gør nogen forskel, kan ikke tage så lang tid at lave et eksemple...
Personligt ville jeg aldrig bruge en reader men derimod fylde dataklasser op fra en reader som jeg skrev før. Problemmet med en reader er man ikke kan sende den igennem lag da man nødig vil holde en connection open op igennem lagene.
Ja, det er jo så lige det, men DataReader skulle være hurtigere, da den jo kun læser og udskriver.... jeg ville i hvert fald prøve det, der skulle være noget hastighed at hente der....
Jeg har nu prøvet med en DataReader også, og der er ikke nogen mærkbar forskel. Det tager stadig alt alt for lang tid at fylde listboxen op når jeg bruger IE.
Jeg arbejder mod en anden løsning hvor jeg ikke har en listbox med 1300 options.
Jer der har besvaret tråden, smid et svar for points.
Spørgsmålet var om min backend kode kunne optimeres, og jeg tror I har ret i at der nok ikke er meget at vinde uanset hvordan man gør. Måske ligger problemet et helt andet sted.
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.