webForumDet fria alternativet

Vad är mest resurskrävande?

ASPur ASP

5 svar · 417 visningar · startad av G8

Medlem sedan jan. 20011 213 inlägg
Frågan#1

Hej

Jag skrev en post i MySQL forumet där jag ställde en fråga på slutet som jag inte fått nått svar på. Tänkte det kanske var någon här inne som har svaret...

Frågan lyder: Någon som vet om det är tyngre att köra två recordsets "i varandra" än att skapa en temporär tabell?

Här är den tidigare posten jag snackar om:
http://www.webforum.nu/showthread.php?s=&threadid=53428

Så här blev koden till slut, snabbare än att skapa den temporära tabellen som LarsG snackar om? Jag vet inte, men skulle anta att det är snabbare att göra såhär i detta fallet dock.

Följdfråga, nån som ser nått mer jag kan göra för att snabba upp koden ännu mer?

<%
sport = request.querystring("sportid")
set connection = Server.CreateObject("ADODB.Connection")
Connection.Open "sportlistan"
count = 1

stm = "SELECT Regioner.id AS Regionsid, Regioner.namn AS Regionnamn, Regioner.antal_klubbar, Regioner.Senaste_matchen FROM Regioner WHERE Regioner.sportid="& sport &" ORDER BY Regioner.namn asc"
set rs1 = Connection.Execute(stm)
%>
                          <tr class="rubrik4"> 
                            <td width="154" height="20">&nbsp; Sport</td>
                            <td width="190" align="center">Ledare</td>
                            <td width="53" align="center">Stad</td>
                            <td width="42" align="center">Antal klubbar</td>
                            <td width="59" align="center">Active</td>
                          </tr>
                          <%
Do until rs1.eof
stm2 = "SELECT Klubbar.id AS Klubbid, Klubbar.namn AS Klubbnamn, Klubbar.poang, Klubbar.borttaget, Klubbar.vilande,  land.namn FROM Klubbar INNER JOIN land ON Klubbar.land = land.id WHERE Klubbar.sportid="& rs1("sportid") &" AND Klubbar.borttaget=0 AND Klubbar.vilande=0 ORDER BY Klubbar.poang desc"
set rs2 = Connection.Execute(stm2)
	'lite kod för att växelvis ändra färg på cellerna i tabellen
	if count mod 2 = 0 then
	bgcolor = "#9AACBE"
	else
	bgcolor = "#BDC9D5"
	end if
%>
                          <tr> 
                            <td bgcolor="<%=bgcolor%>"><a href="liga.asp?LID=<%=rs1("sportid")%>&Sport=<%=SERVER.URLEncode(namn)%>&Region=<%=SERVER.URLEncode(rs1("regionsnamn"))%>">&nbsp;<img src="images/<%=rs1("regionsnamn")%>.gif" alt="<%=rs1("regionsnamn")%>" width="150" height="13" border="0"></a></td>
                            <td align="center" bgcolor="<%=bgcolor%>"><a href="klubbinfo.asp?klubbid=<%=rs2("klubbid")%>"><%=rs2("klubbnamn")%></a></td>
                            <td align="center" bgcolor="<%=bgcolor%>"><img src="images/flags/<%=rs2("namn")%>.gif" alt="<%=rs2("namn")%>" width="14" height="12"></td>
                            <td align="center" bgcolor="<%=bgcolor%>"><%=rs1("antal_klubbar")%></td>
                            <td align="center" bgcolor="<%=bgcolor%>"> 
                              <%
							Dim Datum
							Datum = DateDiff("d", Date, rs1("senaste_matchen"))
							if CINT(datum) >= -21 then
							response.write("<img src=" & "images/yes.gif" & " " & "alt=" & "YES" & " " & "width=" & "23" & " " & "height=" & "13" & " " & "border=" & "0" & ">")
							else
							response.write("<img src=" & "images/no.gif" & " " & "alt=" & "NO" & " " & "width=" & "23" & " " & "height=" & "13" & " " & "border=" & "0" & ">")
							end if
							%></td>
                          </tr>
                          <%
count = count + 1
rs1.MoveNext
Rs2.Close
set rs2 = Nothing
Loop
Rs1.Close
set rs1 = Nothing
Connection.close
Set connection = Nothing
%>

Koden funkar fin fint, men skulle tro att det kan bli lite trögt om flera besökare kommer samtidigt...

Tacksam för svar...

//G8

Medlem sedan dec. 200012 464 inlägg
#2

Det beror på hur många regioner du har. Det blir ju ett extra recordset per region.

Testa och jämför.

Medlem sedan jan. 20011 213 inlägg
#3

Ja, det kan ju bli ett gäng... kan tänka mig att det blir ungefär 7 sporter men kanske 10 regioner i varje...

Det är ju lite klurigt att testa själv, jag märker ingen direkt skillnad... Nått sätt att "stresstesta" koden och jämnföra?

Mvh

//G8

Medlem sedan jan. 20011 213 inlägg
#4

kom på att man skulle ju kunna testa med "start = timer" och jämföra, men det blir ju bara en användare åt gången...

Vad räknas som en snabb eller iaf tillräckligt snabb sida skulle du tro? Kanske skulle behöva skära ner lite på koden om det tar för lång tid...

//G8

Medlem sedan jan. 20011 213 inlägg
#5

Har nu slängt in en del poster i databasen och kört med dubbla recordset's som jag nämnt.

Får resultat på 0.0078125 - 0.0234375 sekunder på sidan. Jag vet inte riktigt hur man ska tolka siffrorna men det verkar vara helt ok, eller?

Vad är rekomenderad tid att ligga inom ungefär?

Mvh

//G8

Medlem sedan mars 20002 836 inlägg
#6

Det är en sak att testa prestanda/belastning av ett script på sin egen utvecklingsburk en helt annan sak att göra det på produktions servern, dvs den server som applikationen till slut hamnar på. Det är på den servern som applikationens prestanda/belastning ska testas på.

Att sitta på sin egen burk med noll i svarstider, ingen belastning av andra användare är inte bra att testa för det går oftast snabbt på den. Det man kan få är om man har ett par olika lösningar på samma problem och timar dem. Då får man en fingervisning om vilket som är mest optimalt.

Finns inget som heter rekomenderad tid. Allt beror på serverns konfigurering och farten i nätet till databas-servern.

cya,
PatrikB

261 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
120 ms — hämta statistik (db)
138 ms — hämta tråd, inlägg och bilagor (db)