---
title: "Optimera denna kodsnutt?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/69264-optimera-denna-kodsnutt"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "medialabs"
published: "2003-02-24T19:01:13.000Z"
updated: "2003-02-25T13:59:52.000Z"
replies: 19
views: 422
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/69264-optimera-denna-kodsnutt"
---

# Optimera denna kodsnutt?

## #1 — medialabs, 2003-02-24T19:01Z

Håller på och går igenom min webbsidas aspkoder som inkluderas på varje sida.

Och nu har jag kommit till nyhetsdelen av sidan och undrar om det går att korta ner denna kod en bit eller förbättra den.

```
<%
i = 0
Set Connect1 = Server.CreateObject("ADODB.Connection")
Connect1.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.Mappath("/database/nyheter.mdb")
Set RS = Server.CreateObject("ADODB.Recordset")
Addera1 = "SELECT * FROM nyheter order by id DESC"
RS.Open Addera1, Connect1

%> <% do while not rs.eof
  i=i+1
if i <= 3 then %>

<img src="/top/pil.gif" width="9" height="10" border="0">&nbsp;<b><a href=/news.asp?id=<%=RS("id")%>><%=RS("rubrik")%></a></b></br>
<%=RS("datum")%>         
<p>         
              <%
	end if
	RS.MoveNext
	Loop

	RS.Close

	Connect1.Close

	%><br><b><a href="/aldrenyheter.asp">Äldre Nyheter</a></b>
```

Permalänk: https://www.webforum.nu/p/69264

## #2 — @nders, 2003-02-24T19:29Z

1) Om du ändå bara ska visa tre nyheter, begränsa det i SQL-frågan.
2) Jag slängde bort lite tomma rader och ändrade öppningen av recordsetet.
3) Jag bytte också namn på din hemskt namngivna SQL-fråga.
4) Plockade bort onödiga context-switchar och ändrade till en response.write i do-loopen.

```
<%
Set Connect1 = Server.CreateObject("ADODB.Connection")
Connect1.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.Mappath("/database/nyheter.mdb")
strSQL = "SELECT * FROM nyheter order by id DESC"
set RS = Connect1.Execute (strSQL)

do while not rs.eof
     Response.write "<img src=""/top/pil.gif"" width=""9"" height=""10" border=""0""> <b><a href=""/news.asp?id=" & RS("id") & """>" & RS("rubrik") & "</a></b></br>" & RS("datum") & "<p>"
     RS.MoveNext
Loop

RS.Close
Connect1.Close
%>
<br><b><a href="/aldrenyheter.asp">Äldre Nyheter</a></b>
```

Du kan säkert tjäna på att byta från den Access-anslutningen du använder till en OLEDB-koppling.

mvh,

Permalänk: https://www.webforum.nu/p/960284

## #3 — Josef, 2003-02-24T19:38Z

Dvs:

```
Connect1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/database/nyheter.mdb")
```

Permalänk: https://www.webforum.nu/p/960290

## #4 — Peeer, 2003-02-24T19:42Z

> **@nders skrev:**
>
> 1) Om du ändå bara ska visa tre nyheter, begränsa det i SQL-frågan.

Borde inte sqlfrågan se ut såhär då?

```
strSQL = "SELECT top 3 * FROM nyheter order by id DESC"
```

Permalänk: https://www.webforum.nu/p/960293

## #5 — @nders, 2003-02-24T19:43Z

> **Peeer skrev:**
>
> > **@nders skrev:**
> >
> > 1) Om du ändå bara ska visa tre nyheter, begränsa det i SQL-frågan.
>
> 
> Borde inte sqlfrågan se ut såhär då?
>
>
> ```
> strSQL = "SELECT top 3 * FROM nyheter order by id DESC"
> ```

Självklart. Jag glömde bara att lägga in det i koden. :)

\*bankar hjärnan hårt i bordet\*

Permalänk: https://www.webforum.nu/p/960296

## #6 — Erik Juhlin, 2003-02-24T19:45Z

Varför ta bort context-switchar när det gör koden tydligare och är effektivare än konkateneringar..?

Permalänk: https://www.webforum.nu/p/960298

## #7 — Erik Juhlin, 2003-02-24T19:54Z

Sen så skulle jag ändra till ett frånkopplat recordset. Och funktioner för att hämta ut recordsets och liknande.

Permalänk: https://www.webforum.nu/p/960307

## #8 — @nders, 2003-02-24T19:55Z

> **Erik Juhlin skrev:**
>
> Varför ta bort context-switchar när det gör koden tydligare och är effektivare än konkateneringar..?

Förbaskat bra fråga faktiskt. 
För mig är det bara naturligt. När jag började med ASP för ett par dagar sedan, så *var det bättre att konkatenera*, so I was told. Jag får väl ändra mig, om det är bättre med contextswitchar.

Om vi då spinner vidare på frågan: Erik, hur gick det med din konkateneringsfunktion skulle vara så mycket bättre än att konkatenera med &?

Permalänk: https://www.webforum.nu/p/960308

## #9 — niko, 2003-02-24T20:24Z

@nders\>\>

Kanske intressant:
<http://www.developerfusion.com/show/1685/>

Ska dock till *många* konkateneringar innan det börjar löna sig:
<http://www.developerfusion.com/show/1685/3/>

Permalänk: https://www.webforum.nu/p/960320

## #10 — Nickemannen, 2003-02-24T20:28Z

Fördeklarera dina variabler :P.

Dim strSql osv :D

Permalänk: https://www.webforum.nu/p/960322

## #11 — @nders, 2003-02-24T20:33Z

**niko:** Tack för länkarna. Det känns dock som att man oftast jagar millisekunder på fel ställen, om man inte har en stor, konkateneringsintensiv applikation vill säga. ;)

Mvh,

Permalänk: https://www.webforum.nu/p/960325

## #12 — niko, 2003-02-24T20:42Z

@nders\>\> Korrekt observation.

> **Nickemannen skrev:**
>
> Fördeklarera dina variabler

Källa?

Permalänk: https://www.webforum.nu/p/960332

## #13 — Josef, 2003-02-24T20:48Z

God programmerarvana. ;)
Det blir för det mesta lättare att felsöka. Har även hört att variablerna hanteras lite snabbare om de är deklarerade, fast jag vet inte hur mycket sanning som ligger bakom det.

Permalänk: https://www.webforum.nu/p/960338

## #14 — niko, 2003-02-24T21:02Z

Om man dimmar variabler *inne* i funktioner/subbar så hjälper man så klart tolken på traven därför att den slipper undersöka om det redan finns en global variabel med samma namn. I annat fall är det väldigt svårt att förstå hur det skulle kunna ha nån betydelse.

Permalänk: https://www.webforum.nu/p/960346

## #15 — Erik Juhlin, 2003-02-25T07:49Z

@nders: Den la jag ner. Men när du säger att man jagar millisekunder på fel ställen så tycker jag det är konstigt att du börjat med konkatenering. För du gjorde väl det för att det ansågs vara snabbare..?
Sen så tycker jag inte bara man ska unvika konkatenering för att det är slött. Största anledningen till att undvika det är att koden ofta blir mer otydlig än om man använder context-switchar.

Permalänk: https://www.webforum.nu/p/960510

## #16 — @nders, 2003-02-25T07:55Z

> **Erik Juhlin skrev:**
>
> @nders: Den la jag ner. Men när du säger att man jagar millisekunder på fel ställen så tycker jag det är konstigt att du börjat med konkatenering. För du gjorde väl det för att det ansågs vara snabbare..?
> Sen så tycker jag inte bara man ska unvika konkatenering för att det är slött. Största anledningen till att undvika det är att koden ofta blir mer otydlig än om man använder context-switchar.

Att jag börjat med konkatenering? Jag har konkatenerat för fulla muggar i mer eller mindre fem år, eftersom, ja, det sades mig att konkatenering av strängar är bättre än mängder av contextswitchar.

Tydlighetsaspekten har du helt rätt i, men man ska inte optimera ihjäl sig med sådana här småsaker. ;)

Permalänk: https://www.webforum.nu/p/960520

## #17 — Engine^, 2003-02-25T09:41Z

Intressant tråd det här. Millisekundjakt är alltid skoj även om det kanske inte tillför användaren något ;) Optimering börjar bli ännu intressantare vid hiskeliga klientsides-recordsets, som loopas och modifieras. Där kan man titta på andra bitar, som kan slöa ner.

Den där Catter, som niko länkade till ska däremot jag titta på... jag har nämligen en rekursiv funktion med åtta konkateneringar för varje anrop och normalt anropas funktionen 2800 ggr. Det borde gå att tjäna in tid där ;)

Permalänk: https://www.webforum.nu/p/960598

## #18 — niko, 2003-02-25T10:44Z

Engine^ \>\>
Du har alltså 22400 (8\*2800 ) konkateneringar?? Tabellen i min andra länk går bara upp till 2000, men om man extrapolerar så borde du kunna putsa bort ett par-tre veckor från din exekveringstid (om det är en och samma sträng).

Permalänk: https://www.webforum.nu/p/960624

## #19 — Engine^, 2003-02-25T10:50Z

Det är inte varje gång det konkateneras, men som värst har funktionen tagit cirka 4 ½ minut att köra :)

Jag har däremot tänkt till lite och har fått ner exekveringstiden till knappt 4 sekunder. Genom att inte använda konkatenering överhuvudtaget, utan pula in värden i en tabell istället... det fungerade bättre ;)

Permalänk: https://www.webforum.nu/p/960628

## #20 — medialabs, 2003-02-25T13:59Z

Jag tackar för er hjälp. Det funkar utan problem nu.

Permalänk: https://www.webforum.nu/p/960718

---

Tråden på webben: https://www.webforum.nu/amne/asp/69264-optimera-denna-kodsnutt
