> Kan man ha' et overdrevet forbrug af funktioner, som kan koste perfomance
i
> det lange løb?
Det er forbløffende billigt at kalde funktioner. Betragt flg. kode:
<?php
require 'xlog.php';
function getTestText() {
return "Tekst";
}
xlog("Funktion start");
for ($i = 0; $i < 1000000; $i++) { $str = getTestText(); }
xlog("Funktion slut");
xlog("Inline start");
for ($i = 0; $i < 1000000; $i++) { $str = "Tekst"; }
xlog("Inline stop");
?>
Der køres to løkker en million gange. I den første kaldes en funktion, hvor
returværdien tildeles en variabel. I den anden er funktionskaldet erstattet
med en konstant tekst.
Forskellen mellem tiderne i kørslen må således afspejle det tidsmæssige
overhead ved at kalde en funktion. Eksemplet er konstrureret med henblik på
at skabe størst muligt procentvist overhead.
Resultatet af kørslen er:
## 22/01/02 15:57:07 Xlogging initiated in /home/ajoh/dev/tree/xlog.php
0.0001 Funktion start
4.7156 Funktion slut
4.7156 Inline start
7.3643 Inline stop
## 22/01/02 15:57:07 Xlog finished. Total execution time (7.3646 s.)
Del 1 kørte altså på 4.7155 sek, og del 2 på 2.6487 sek. (7.3643 - 4.7156).
Funktionskaldet repræsenterer _i dette tilfælde_ et overhead på ~80 %. Jo
mere arbejde funktionen udfører, jo lavere vil det procentvise overhead
blive.
Mere interessant er det dog, at
(4.7155 - 2.6487) / 1000000 = 0.00000020668 sek
Dvs. det tidsmæssige overhead pr. funktionskald begrænser sig til lidt over
2 milliondele af et sekund.
> Er der nogen performancemæssig straf for at bruge en funktion, istedet for
> at skrive koden direkte istedet?
Ikke i virkeligheden
/A