Ju mer man håller på att kodar i ASP desto mer lär man sig. Jag tänkte ge några nya optimeringstips. Skulle vara intressant att höra några av era favoriter.
Response.redirect
Iställer för att använda response.redirect kan man använda sig av server.transfer som är en aning snabbare.
Arrays kombinerat med konstanter
Innan kodade jag på detta sätt:
strSQL = "SELECT (din sqlfråga)"
Set RecSet = Connect.Execute(strSQL)
IF NOT RecSet.EOF THEN arrRecords = RecSet.GetRows
FOR I=0 to UBound(arrRecords,2)
variabelX = arrRecords(0,I)
variabelY = arrRecords(1,I)
response.write variabelX & variabelY
Next
Idag försöker jag mer arbeta på detta sätt:
const variabelX = 0
const variabelY = 1
strSQL = "SELECT (din sqlfråga)"
Set RecSet = Connect.Execute(strSQL)
IF NOT RecSet.EOF THEN arrRecords = RecSet.GetRows
FOR I=0 to UBound(arrRecords,2)
response.write arrRecords(variabelX,I) & arrRecords(variabelY,I)
Next
Rekommenderat är att namnge sina konstanter med det innehåll de innehåller så att man får en bra överblick över koden.
Bara en liten notering på punkt ett: skillnaden mellan response.redirect och server.transfer är att all "state" följer med till nästa sida när du använder transfer, vilket inte sker med redirect... varför det också låter konstigt att det skulle gå snabbare...
Bara en liten notering på punkt ett: skillnaden mellan response.redirect och server.transfer är att all "state" följer med till nästa sida när du använder transfer, vilket inte sker med redirect... varför det också låter konstigt att det skulle gå snabbare...
Att jämföra response.redirect och server.transfer är som att jämföra äpplen med päron. response.redirect är i allt väsentligt en klientfunktion och kräver två rundturer över nätverket. Ganska givet att den är långsammare under de flesta förhållanden.
Från DevGuru:
This transfered information includes all objects and variables that have been given a value in an Application or Session scope, and all items in the Request collections.
OT: Tycker det verkar lite konstigt att de skriver Application och Sessionscope i den beskrivningen, för de samlingarna följer ju med oavsett hur du länkar/skickar/postar till en ny sida. :)
Konstanterna ,,128 ser till att det inte returneras ett tomt recordset vid INSERT eller UPDATE i ett execute-anrop.
Prestandamässigt bättre med andra ord.
Alltså:
'vill ha ett recordset tillbaks
[red]set rs = [/red]conn.execute("select * from table")
'vill inte ha ett recordset tillbaks
conn.execute("update table set kolumn = 1 where id = 5")[red],,128[/red]
'eller
conn.execute("insert into table (kolumn) values('nåt')")[red],,128[/red]
const variabelX = 0
const variabelY = 1
strSQL = "SELECT (din sqlfråga)"
Set RecSet = Connect.Execute(strSQL)
IF NOT RecSet.EOF THEN arrRecords = RecSet.GetRows
FOR I=0 to UBound(arrRecords,2)
response.write arrRecords(variabelX,I) & arrRecords(variabelY,I)
Next
strSQL = "SELECT (din sqlfråga)"
Set RecSet = Connect.Execute(strSQL)
IF NOT RecSet.EOF THEN arrRecords = RecSet.GetRows
FOR I=0 to UBound(arrRecords,2)
response.write arrRecords(0,I) & arrRecords(1,I)
Next
doggelito: Skillnaden är att du inte har någon aning om vad som finns i arrayn när du skriver ut det på det sättet. konstanter ska hjälpa en att få en bättre överblick över koden.
doggelito: Skillnaden är att du inte har någon aning om vad som finns i arrayn när du skriver ut det på det sättet. konstanter ska hjälpa en att få en bättre överblick över koden.
Sant!
Mitt tips och kanske det allra bästa tipset är att om man skriver samma saker väldigt ofta och på flera ställen så för guds skull gör en function eller sub isället!
Vet du inte vad function eller sub är så gör en sökning här på wF eller på msdn. :)
doggelito: Skillnaden är att du inte har någon aning om vad som finns i arrayn när du skriver ut det på det sättet. konstanter ska hjälpa en att få en bättre överblick över koden.
Konstanter har väl en fördel i prestanda också tror jag, om man jämför med variablar. En konstant kan inte ändra värde under runtime vilket gör den readonly i koden, och därmed ökar prestandan.
Så är det väl iallafall i VB, rätta mig någon om jag har fel. :)
Överst på alla sidor, eftersom det betyder att alla ASP-kod, databaskopplingar osv. görs innan sidan börjar ladda hem HTML-koden. Har använt mig av det på några sidor, och tycker att sidorna laddar snabbare då.
267 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25