PHP Progger zieht euch WARM an :D

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 :eek: mal ruft sich die Funktion selber auf um an dieses Ergebnis zu kommen

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 :eek:

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 :rolleyes:
 
hehe interessant....in grösseren Projekten kann das
sicher ein wichtige Rolle spielen, aber für mein
Gebrauch, genügt mir Php eigentlich vollkommen ;)
 
Hiiiiiiiilfe!

*Admin, Moderator, schnell, unser allseits geliebtes PHP wurde in Gedahr gebracht!!! Schnell, Thread schließen und löschen! Hiillllfe*

*g* is schon interresant, aber, erzähl nie einem Programmierer, das eine andere Sprache schneller und besser als seine eigene ist. Programmierer werden da urig Böse.

In diesem Sinne Frohe Weihnachten!
 
Re: Hiiiiiiiilfe!

Original geschrieben von MIniMe_
*Admin, Moderator, schnell, unser allseits geliebtes PHP wurde in Gedahr gebracht!!! Schnell, Thread schließen und löschen! Hiillllfe*

* Frohe Weihnachten!

Das Problem dabei ist : ich bin Admin im PHP Forum :eek:

;)

Ich mag PHP ja auch und programmier gern in PHP ist aber einfach recht interressant

in diesem Sinne euch auch Frohe Weihnachten :)
 
lol, das liegt daran das ich heute erst um halb 6 ins bett gegangen bin *g*
aber vielleicht gibts ja noch andere moderatoren *hoffnungsvoll guck, fg*
 
Einen "richtigen" Vergleich kann man das kaum nennen :)

ASP ist schließlich ein kommerzielles Produkt. Mach den Php-Test mal mit der kommerziellen Version des ZEND-Cache :) ... okay.. das ist recht teuer - aber zumindest mit realistischen Ergebnissen. :)
 
@Neurodeamon

1. Sprechen wir ueber ASP.net und nicht ueber ASP (Himmelweite unterschiede)

2. Ist ASP.net nicht kommerziell sondern kannste dir aus dem Internet saugen (ohne ein Pfennig zu bezahlen) !!!!

3. Selbst ASP ist nicht kommerziell laueft auf jedem IIS und PWS welchen du zu Win dazubekommst. Und Chilli ASP auch auf Linux

4. Nachdem das klar ist : Es ist ein Vergleich :)

Das asp geld kostet und php nichts ist kooooomplett falsch.

gruesse holyfly
 
Mea culpa, man möge mir verzeihen :)

Nehme alles zurück! Habe nicht richtig gelesen, sorry - ist sonst net meine Angewohnheit etwas zu überfliegen :( .

So gesehen frage ich mich woran die php-leutz ständig arbeiten, am speed optimieren für die free version bestimmt nicht :)
 
Will mal was klarstellen: *g*

Hoi!

Eine Funktion, die sich selbst 1000000 mal aufruft läuft kompiliert (also inkl. zeit, die die Kompilierung in anspruch nimmt) sicher schneller als eine Interpretierte, aber wenn ich lediglich 100 Zeilen ausgebe (mit echo bzw in net scheint das Äquivalent ja Response.Write zu sein), dann schlägt die Interpretietre Sprache die Kompilierte um Meilen (ja ok, vielleicht nur um Meter).
Und der Sinn einer Websprache ist idR nunmal nicht 100000mal eine Funktion aufzurufen, sondern 100 Zeilen auszugeben.
Desto Linearer der Quelltext umso besser der Interprter im Gegnsatz zum Compiler.

Gruesse

..ooOOipOOoo..
 

Neue Beiträge

Zurück