Avatar billede milandt Nybegynder
30. juni 2005 - 12:17 Der 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 der tager tid er Zips.DataBind();


frontend:

<asp:ListBox runat=server Rows=10 ID="Zips" EnableViewState="false" />   

code behind:

protected System.Web.UI.WebControls.ListBox Zips;

DataSet dsZips = Project.Components.ZipCodes.GetValidZipCodes(1);
Zips.DataSource = zipCodesFiatAvalible;
Zips.DataTextField = "DisplayName";
Zips.DataValueField = "ZipCode";
Zips.DataBind();
Avatar billede segato Nybegynder
30. juni 2005 - 12:42 #1
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.
Avatar billede milandt Nybegynder
30. juni 2005 - 12:46 #2
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.
Avatar billede milandt Nybegynder
30. juni 2005 - 12:47 #3
Der er i øvrigt tale om alle danske postnumre - dvs ca 1300 stykker. Fylder lidt i en listbox.
Avatar billede Syska Mester
30. juni 2005 - 14:18 #4
Synes det lyder meget spøjts at IE tager 10 sek, men Firefox tager ½ sek, lyder mere som et browser problem end "kode" problem....

// ouT
Avatar billede segato Nybegynder
30. juni 2005 - 14:29 #5
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.
Avatar billede Syska Mester
30. juni 2005 - 15:00 #6
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...

// ouT
Avatar billede segato Nybegynder
30. juni 2005 - 15:44 #7
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.
Avatar billede Syska Mester
01. juli 2005 - 07:53 #8
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....

// ouT
Avatar billede milandt Nybegynder
01. juli 2005 - 09:30 #9
Hej drenge,

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.
Avatar billede segato Nybegynder
01. juli 2005 - 10:04 #10
Jeg har prøve lignede ting med et treeview jeg tror det er kontrolen. Prøv at smide samme data i et datagrid og så se hvor hurtig det går.
Avatar billede Syska Mester
01. juli 2005 - 19:11 #11
Ved ikke om du tager mit som et svar også, ellers kan du bare afvise
Avatar billede Syska Mester
01. juli 2005 - 19:11 #12
flot af mig
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester