Hoe snel is mijn code?
Door Michiel van Otegem
20 juni 2001
Het is erg belangrijk om te weten hoe snel je code, of delen daarvan, loopt. Zo kun je namelijk
makkelijk zien welke operaties misschien anders moeten om meer gebruikers op je site te kunnen
verwerken. Hoewel snelheidsmeeting geen vervanging is voor testen onder (zware) load, kan het je
tijdens het ontwikkelen van een applicatie helpen van te voren bottlenecks te identificeren en
te verhelpen. Voor echte robuuste tests kun je beter een stress-tool gebruiken zoals de
Web Application Stress Tool.
Om snelheid te meten zijn er allerlei (COM) objecten zoals
Profiling Component 1.1.
Deze componenten zijn accurater dan tijdsmeting met script. Tijdsmeting op basis van script
is namelijk afhankelijk van de interne klok van de computer. Die werkt op basis van een interval
iedere 55 milliseconden. Je meting zal dus ook maar accuraat zijn tot op 55 milliseconden.
De code hieronder laat zien hoe je kan meten met VBScript en JScript:
metervbscript.asp
<%
Option Explicit
Dim Startpunt
Dim i
Startpunt = Timer
For i = 1 To 1000
Response.Write("Doe iets!")
Next
Response.Write("Tijdsduur: " & (Timer - Startpunt) & " seconden")
%>
meterjscript.asp
<SCRIPT LANGUAGE=JScript RUNAT=Server>
function meetpunt() {
var d = new Date();
return d.getTime();
}
var startpunt = meetpunt();
for(var i=0; i < 1000;i++) {
Response.Write("Doe iets!");
}
Response.Write("Tijdsduur: " + (meetpunt() - startpunt) + " milliseconden")
</SCRIPT>
Als je dit script test zie je 1000 maal de tekst "Doe iets!" en daarna een melding van het aantal
milliseconden dat het script nodig had. Als je een aantal keer ververst, zie je dat de tijd niet altijd
hetzelfde is. Je moet het dus altijd een paar keer uitvoeren en een gemiddelde nemen om een goed idee
van de snelheid te krijgen. Let er bovendien op dat het kan zijn dat het script de eerste keer in
het server geheugen geladen en gecompileerd wordt. De tweede keer dat het script loopt, is dit waarschijnlijk
niet nodig en zal het dus enigszins sneller zijn.
|