Mir ging es gerade um die Variableninterpolation.
Dein Code hat aber auch ein Problem. Perl ist so "intelligent", das es die Strings schon beim wandeln in den Bitecode zusammenfügt und später nurnoch verschiebt. Die von dir gemessenen Differenzen kommen daher vom Betriebssystem und sind deshalb auch so willkührlich. Du hättest "eval" verwenden müssen.
Der String mit dem Singelpuote ohne Dots ist sozusagen die Referenz. Alle anderen müssen langsamer sein.
Innerhalb eines Strings mit Doublequote werden Werte etwas anders eingefügt als durch ein zusammenfügen mittels Punkt. Ich wollte schauen wie schnell die jeweilige vorgehensweise ist.
Code: Alles auswählen
Rate duote-dot squote-dot dquote squote
duote-dot 912796/s -- -8% -10% -77%
squote-dot 992798/s 9% -- -3% -75%
dquote 1019883/s 12% 3% -- -75%
squote 4016820/s 340% 305% 294% --
Rate duote-dot dquote squote-dot squote
duote-dot 904002/s -- -16% -18% -77%
dquote 1070079/s 18% -- -3% -73%
squote-dot 1105117/s 22% 3% -- -72%
squote 3962043/s 338% 270% 259% --
Rate duote-dot dquote squote-dot squote
duote-dot 905747/s -- -8% -9% -76%
dquote 984197/s 9% -- -2% -74%
squote-dot 1000784/s 10% 2% -- -74%
squote 3807142/s 320% 287% 280% --
Rate duote-dot squote-dot dquote squote
duote-dot 911957/s -- -8% -9% -75%
squote-dot 990587/s 9% -- -1% -73%
dquote 1004122/s 10% 1% -- -73%
squote 3690088/s 305% 273% 267% --
Rate duote-dot squote-dot dquote squote
duote-dot 890279/s -- -14% -16% -79%
squote-dot 1035001/s 16% -- -3% -75%
dquote 1064253/s 20% 3% -- -75%
squote 4220471/s 374% 308% 297% --
Es scheit egal zu sein, ob man Mit Singelquotes und Punkten arbeitet oder nut mit Doublequotes. Beide sind gleich schnell. Das Doublequotes und Punkte zusammen langsamer sind, kann damit erklären, daß jeder Teilstring und die Variablen getrtennt abgearbeitet wird.
Deine Werte sagen nur, daß es egal ist wie man einen String zusammenfügt. Die Differenzen entsehen erst bei der Interpretation der Variablen. Es scheint dabei keinen Unterschied zu machen ob die Variaben im String eingebettet sind oder nicht. Nur Doublequotes und Variablen außerhalb des Stringes durch Punkte hinzugefügt, sollte man vermeiden. Übrigens auch "sprintf" ist recht langsam.
Zu deinem p.s.:
Ich bin eben dieser, und wahrscheinlich eben jener Sid Burn.