Philipp Hasenfratz: Geschwindigkeit von strict/warnings

Beitrag lesen

Halihallo Andres

interessant zu wissen, ob ein "use strict" Performance braucht,

Ja, ich hab es mal bei einem Sxipt getested, ist allerdings schon ein wenig her. Da ich damals Benchmark nicht kannte, hab ich einfach in einer while Schleife das ganze Script ein paar tausend mal durchgeführt. War so um 0,2%-0,4%langsamer, allerdings weiß ich nicht mehr was für ein Script das wasr, mit dem ich das getested habe.
Ich komentiere daher inzwischen wenn alles mal ohne Fehler läuft use strich; aus.

Danke für die Info; hatte (noch) keine Zeit zum Testen, wobei ich gestehen muss, dass
ich auch gar nicht weiss, wie ich das machen sollte, denn (womit ich beim Thema bin) :
Es gibt, soweit ich mir das bisher überlegt habe, kein genaues Messinstrument, um zu
wirklich aussagekräftigen Benchmark-Werten zu kommen. Das Messergebnis würde von zuvielen
Faktoren abhängen. Nehmen wir z. B. deine Messmethode (sorry, wenn ich deine Messung
kritisiere); es wird eine Schleife im Thread generiert, somit ist der Parsetree immer
schon existent und Speicher allokiert (reserviert), bei einer neuen Variable (ob my oder
nicht) muss also nicht notgedrungen Speicher allokiert werden und dies verfälscht
das Ergebnis, wo ich ja davon ausgegangen bin, dass Speicher von definierten Variablen
bereits beim Start-up (im gewissen Sinne eine "weitere Optimierung des Parsetrees")
reserviert werden können (dieses "Feature" würde die Messmethode nicht berücksichtigen).
Gehen wir von einer iterierenden Ausführung von Test-Scripten aus, sodass jedesmal ein
neuer Prozess gestartet wird und somit der Start-up auch in das Messergebnis einfliesst,
haben wir das Problem, dass viel Zeit für OS-Operationen verbraucht wird, um den
Perlinterpreter/Dateien zu laden (das muss ja auch nicht immer _genau_ gleich lange
dauern). Ich bin aufgrund dieser Gedanken zum Schluss gekommen, dass es keine
Möglichkeit über  Perl gibt, um zu einem signifikanten Messergebnis zu kommen. Ich bin
mir noch nicht sicher, glaube jedoch, dass eine Analyse des Quelltextes von Perl und
Tests auf dieser Ebene die einzige Möglichkeit ist, ein relevantes Testergebnis zu
erhalten.
Nun gut, das "use warnings" zu testen ginge vielleicht, da dies notgedrungen "on-the-
fly" passiert und somit ein einigermassen relevantes Messergebnis über Perl ermöglicht.

Zudem sollte ich vielleicht zuerst meine These belegen, dass "eingeführte" (my/our/use
vars) Variablen (unter Berücksichtigung des Kriteriums, dass sie im Main-Scope definiert
sind) wirklich schon beim Start-up allokiert werden; wer weiss, vielleicht hat Larry
nicht daran gedacht, bzw durch Messungen bereits bewiesen, dass es gar nicht effizient
wäre.

Viele Grüsse

Philipp