Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Geschwindigkeitsmessungen in ASP

Geschrieben von: Christoph Wille
Kategorie: Optimierung

Ein von Anfängern oft übersehener Bereich der Programmierung ist die Optimierung des geschriebenen Codes. Aber auch Experten sollten sich dieses Themas annehmen - denn nur eine Geschwindigkeitsmessung kann genauen Aufschluß über die Performance verschiedener Lösungsansätze bringen. Gefühlsmäßige Entscheidungen sind meist falsch.

Nehmen wir als Beispiel die Diskussion um das Formatieren der Zahl 0 aus der AspGerman Newsliste. Folgender Code wurde vorgeschlagen:

Replace(FormatNumber(Variable, 2, -1),"0,00","0")
Abgesehen davon, daß neben der gewünschten Umwandlung von 0,00 in 0 auch alle zehnfachen (70,00 etc) gekürzt werden (in 70), hat dieser Lösungsansatz gegenüber
Function Waehrung(Variable)
   If Variable <> 0 then
      Waehrung = FormatNumber(Variable, 2, -1)
   Else
      Waehrung = "0"
   End If
End Function
sogar einen krassen Geschwindigkeitsnachteil - und zwar von über 330 Prozent! Und das bei einer Implementierung als Funktion! Inline wäre er sogar noch um vieles größer (500 Prozent).

Und wie komme ich zu diesen Zahlen? Ganz einfach: da wir hausintern große Seiten zu optimieren haben, habe ich eine Komponente zur Geschwindigkeitsmessung programmiert (gratis erhältlich bei IISDEV auf unserem Server). Ich habe die oben vorgestellten Lösungsansätze mit der Profiler Komponente gemessen, und zwar mit folgender ASP Datei:

<%
Function Waehrung(Variable)
   If Variable <> 0 then
      Waehrung = FormatNumber(Variable, 2, -1)
   Else
      Waehrung = "0"
   End If
End Function

Dim xObj, i, Variable, interim, runCount
Dim timerStart, timerDiff, profileElapsed, prfTime1, prfTime2

Set xObj = Server.CreateObject("Softwing.Profiler")
runCount = 100

Variable = 0
xObj.ProfileStart()
For i = 1 To runCount
  interim = Replace(FormatNumber(Variable, 2, -1),"0,00","0")
Next
profileElapsed = xObj.ProfileStop()

prfTime1 = profileElapsed / runCount


Variable = 0
xObj.ProfileStart()
For i = 1 To runCount
   interim = Waehrung(Variable)
Next
profileElapsed = xObj.ProfileStop()
prfTime2 = profileElapsed / runCount

Response.Write (prfTime1/prfTime2*100)
%>

Erwähneswert ist die Variable runCount: da ein einziger Durchlauf keine Aussagekraft hat, muß man den Code in einer Schleife laufen lassen und den Mittelwert bilden. Der Einfachheit halber habe ich 100 Durchläufe eingestellt - und dennoch wird bei jedem Aufruf dieser Seite sich der Prozentsatz ändern (der Grund ist zb die Zuweisung der Prozessorzeit an den IIS, etc). Die Zahlen, die ich ermittelt habe, stammen von einem PIII 450, IIS 5.0 RC1.

Was lernen wir aus diesem Beispiel? Vermeintlich elegante oder kurze Lösungen sind nicht immer die schnellsten. Und Entscheidungen über Geschwindigkeitsvorteile sollten nie aus dem Bauch heraus getroffen werden.

Verwandte Artikel

Highspeed-Abfragen einer SQL Server Datenbank
Webserver-Tuning mit XTune

Links zu anderen Sites

IISDEV Profiling Komponente

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.