Christian Fein
Erfahrenes Mitglied
Ich habe mal einen speedtest zwischen PHP und ASP.net
programmiert. Einige kennen sicherlich die Fibonacci Reihe.
Zur erklaerung :
Die 3. Zahl ist immer die Summe der 2 vor ihnen.
sprich 1,1,2,3,5,8,13 usw
Ist ein beliebter algorythmen zum geschwindigkeit test.
Ich habe nun in PHP und ASP.net (C#) dieses anhand einer Funktions-Rekursion geloest und die Zeit "gestoppt" die gebraucht wird um die 30. Zahl dieser Reihe aufzufinden.
Zur Information 1664079
mal ruft sich die Funktion selber auf um an dieses Ergebnis zu kommen
Ich zeig am besten mal beide codes auf.
ASP.net
Ok lasst uns zum Ergebnis kommen:
PHP:
1664079 Funktionsdurchlaeufen zeigen die 30. Fibonacci-Zahl lautet 832040
Start Zeit : 0.54540500 1009186096
End Zeit : 0.40359500 1009186110
Die Vordere Zahl sind die Microsecunden die Hintere die Timestamp Secunden
Ergebnis : 14.14181 secunden
ASP.net
Tracing zeig Ergebnis = 0.057613 secunden
Ich will nicht rechnen wieviel mal asp.net 's 0.05 secunden im Vergleich zu php's 14.14... secunden sind aber derp schneller.
Nun ok ok es kommt selten vor das mann scripts schreibt die eine Funktion 1 millionen mal und mehr aufruft aber ich finds dennoch interressant zumal in der Zeit das php script laeuft mein PC/Win2k saemmtliche Ressourcen der php.exe zugestanden hat.
Woher kommt das nun ?
PHP interpretiert bei jedem Funktionslauf den Code neu. ASP.net nicht ! Denn asp.net kompiliert den Code... Eigentlich sieht mann daran das Kompilierter Code gegen Interpretierter Code wirklich so unfair ist das mann es nicht vergleichen darf
Hoffe jetzt gibts keine PHP Gurus die mich toeten wollen
programmiert. Einige kennen sicherlich die Fibonacci Reihe.
Zur erklaerung :
Die 3. Zahl ist immer die Summe der 2 vor ihnen.
sprich 1,1,2,3,5,8,13 usw
Ist ein beliebter algorythmen zum geschwindigkeit test.
Ich habe nun in PHP und ASP.net (C#) dieses anhand einer Funktions-Rekursion geloest und die Zeit "gestoppt" die gebraucht wird um die 30. Zahl dieser Reihe aufzufinden.
Zur Information 1664079

Ich zeig am besten mal beide codes auf.
PHP:
<?
function fib($n,$anzahl)
{
$anzahl++;
if($n<3)
{
return (1);
}
else
{
return(fib($n-2,&$anzahl) +fib($n-1,&$anzahl));
}
}
$beginn = microtime();
$anzahl = 0;
$n = 30;
$answer = fib($n,&$anzahl);
$end = microtime();
echo $anzahl . " Funktionsdurchlaeufen zeigen die " . $n .". Fibonacci-Zahl lautet " . $answer;
echo "<br><br>Start Zeit : " . $beginn;
echo "<br>End Zeit : ". $end;
?>
ASP.net
Code:
<script language="C#" runat="server">
protected int fib(int n, ref int anzahl)
{
anzahl++;
if(n<3)
{
return (1);
}
else
{
return(fib(n-2,ref anzahl) +fib(n-1, ref anzahl));
}
}
protected void Page_Load(Object Src, EventArgs E)
{
Trace.Write("Startzeit","Funktionsdurchlauf");
int anzahl = 0;
int n = 30;
int answer = fib(n, ref anzahl);
Trace.Write("Enzeit","Funktionsdurchlauf");
Response.Write(anzahl +" Funktionsdurchlaeufe zeigen die " + n +". Fibonacci-Zahl lautet " + answer);
}
</script>
Ok lasst uns zum Ergebnis kommen:
PHP:
1664079 Funktionsdurchlaeufen zeigen die 30. Fibonacci-Zahl lautet 832040
Start Zeit : 0.54540500 1009186096
End Zeit : 0.40359500 1009186110
Die Vordere Zahl sind die Microsecunden die Hintere die Timestamp Secunden
Ergebnis : 14.14181 secunden
ASP.net
Tracing zeig Ergebnis = 0.057613 secunden

Ich will nicht rechnen wieviel mal asp.net 's 0.05 secunden im Vergleich zu php's 14.14... secunden sind aber derp schneller.
Nun ok ok es kommt selten vor das mann scripts schreibt die eine Funktion 1 millionen mal und mehr aufruft aber ich finds dennoch interressant zumal in der Zeit das php script laeuft mein PC/Win2k saemmtliche Ressourcen der php.exe zugestanden hat.
Woher kommt das nun ?
PHP interpretiert bei jedem Funktionslauf den Code neu. ASP.net nicht ! Denn asp.net kompiliert den Code... Eigentlich sieht mann daran das Kompilierter Code gegen Interpretierter Code wirklich so unfair ist das mann es nicht vergleichen darf
Hoffe jetzt gibts keine PHP Gurus die mich toeten wollen
