Close

Detaljer spelar uppenbarligen roll

Sitemap för webbfunktion

Att vandra som utvecklare mellan olika system kan ibland bli lite skumt. Tidigare jobbade jag med IBM Lotus Domino som webbplattform men växlade för en del år sedan över till ASP classic och nu DotNET.
På IBM-plattformen instruerades man att om problemet kunde lösas med det förenklade språket @Formulas så skulle det göras så, annars var det LotusScript som gällde om något var komplicerat (en skum aversion av VBscript btw).

I @Formulas fanns inte några snygga sätt att hantera sammanslagning av textsträngar, kanske för att det sällan verkligen behövdes, och med andra ord så slog man ihop textsträngar för att bilda längre sjok av text.

Som första grej som kodare inom .NET fick jag som tur var en programmerings-mentor (är nog själv mer av en GUI-programmera faktiskt) som fick spel när han såg kod som nedan:

string testkod = string.Empty;
i = 0;
while(i < 1000) {
   testkod += i.ToString();
   i++;
}

Man ska så klart använda StringBuilder istället, som nedan:

StringBuilder sb = new StringBuilder();
i = 0;
while(i < 1000) {
   sb.Append(i.ToString());
   i++;
}

Nu har jag testat att göra fel på min webbplatskarta mest för att se hur illa skillnaden mellan strängkonkatenering och användandet av StringBuilder är.
Denna webbplats karta över länkar är 890Kb i sitemap-format, antalet poster är typ 4500 stycken, filen skapas i realtid och mySQL-severn ligger på samma fysiska maskin.
Båda varianterna tar 100% CPU för processen för Internet Information Server men det som skiljer sig väsentligt är tiden som IIS jobbar.
För strängkonkatenering tar det cirka 14 sekunder, för StringBuilder cirka 2,5 sekunder!

Vät att notera är att om jag kör exakt samma SQL-fråga direkt mot databasen så tar det 21 millisekunder så det pekar rätt tydligt på att optimeringen ska göras i kod och att ett databasindex inte gör nämnvärd skillnad.

Testade att ladda upp den långsamma versionen på webbplatsen för att se hur sökmotorerna reagerade.
Google tog en dag på sig att konstatera att webbplatskartan var defekt alternativ inte tillgänglig.

Med andra ord så spelar det verkligen roll och att StringBuilder gör nytta utan extrema datamängder.

Leave a Reply

Your email address will not be published. Required fields are marked *