webForumDet fria alternativet

optimering av denna kod

ASP

6 svar · 232 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Hur skulle man kunna optimera denna kod så att den blir ännu mer snabbladdad?

			SQL = "SELECT * FROM members order by minonline desc"
			Set RecSet = Connect.Execute(SQL)

	
			If not RecSet.EOF then
			strDatat = RecSet.GetRows()
			End if

			Set RecSet = nothing

			IF ISArray(strDatat) THEN

			FOR i = 0 to 4

			response.write "<font color='#006600'><b>"&i+1&".</b></font> "

			
			If strDatat(26,i) = "polis" Then
	
			response.write "<img src='bilder/idpolis.gif'>"

			ElseIf strDatat(26,i) = "pojke" Then

			response.write "<img src='bilder/idpojke.gif'>"

			Else

			response.write "<img src='bilder/idflicka.gif'>"

			End If

			response.write " <a title='"&strDatat(1,i)&" bor i "&strDatat(5,i)&".' href='krypin.asp?id="&strDatat(0,i)&"'>" 

			username = strDatat(1,i)
			If Len(username) > 7 then
			strusername = Left(username,7)
			response.write ""&strusername&"."
			else
			response.write username
			End If
			
			response.write "</a> <font color='#666666'>("&strDatat(22,i)&")</font>"

			response.write "<br>"

			Next

			
		
			end if
Medlem sedan apr. 20021 203 inlägg
#2

ser bra ut

Medlem sedan feb. 20011 498 inlägg
#3

Kom på vad jag kan göra, vid SQL-satsen lägger jag till de kolumner jag vill hämta ifrån istället för alla.

Medlem sedan dec. 2000557 inlägg
#4

En smidig sak som man kan göra om man är 100% säker på att det finns något att hämta från databasen är att köra detta anrop:

[RED]strDatat = Connect.Execute("SELECT fld1, fld2, fld3, fld4 FROM members ORDER BY minonline DESC").GetRows()[/RED]

Då behöver man inte skapa ett recordset över huvudtaget utan skapar arrayen direkt, vilket sparar tid och resurser. :)

Medlem sedan mars 20002 836 inlägg
#5

Palleman:
Den ska man vara väldigt säker på att man alltid har data innan man kör.

En liten optimering som kan göras är att ta bort if-satsen polis, pojke eller annat till Select Case:

	Select Case LCase(strDatat(26,i))
		Case "polis"
	
			response.write "<img src='bilder/idpolis.gif'>"

		Case "pojke"

			response.write "<img src='bilder/idpojke.gif'>"

		Case Else

			response.write "<img src='bilder/idflicka.gif'>"

	End Select

cya,
PatrikB

Medlem sedan mars 20015 287 inlägg
#6
Select Case LCase(strDatat(26,i))
		Case "polis","pojke"
	
			response.write "<img src='bilder/id" & LCase(strDatat(26,i)) & ".gif'>"

		Case Else

			response.write "<img src='bilder/idflicka.gif'>"

	End Select

Eller om det ALLTID står "flicka" i db:n om det inte är polis eller pojke, för då räcker det ju med:

response.write "<img src='bilder/id" & LCase(strDatat(26,i)) & ".gif'>"

Eller kanske med en liten koll:

If LCase(strDatat(26,i)) <> "" then
response.write "<img src='bilder/id" & LCase(strDatat(26,i)) & ".gif'>"
End If
Medlem sedan mars 20015 287 inlägg
#7

Samt detta block:

username = strDatat(1,i)
			If Len(username) > 7 then
			strusername = Left(username,7)
			response.write ""&strusername&"."
			else
			response.write username
			End If

Kan väl lika gärna ersättas med:

response.write Left(Len(strDatat(1,i)),7)

...lite osäker iofs...

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)