Sie sind hier : sebastian1012.bplaced.net/ homepage-neu / kreuz-und-quer / tutorials-info-neuigkeiten-php / funktionen-oder-iterative-programmierung.php

Funktionen oder iterative Programmierung?

Wie in allen Programmiersprachen, die Funktionen unterstützen, gilt auch in PHP, dass man keine Codeblöcke einfach von einem Script in ein anderes kopieren sollte. Ich höre Stimmen: „Aber ich brauche diesen Block doch in beiden Scripten“.
Meine Antwort: „Richtig, dagegen ist auch nichts einzuwenden. Aber du brauchst den Code nicht 2 mal.“

Dieser Dialog zielt darauf ab, dass es Funktionen gibt und diese sollte man auch nutzen – und am besten effektiv nutzen. Leider gibt es nämlich auch das Gegenteil zu den in diesem Artikel beschriebenen Entwicklern: solche, die fast vollständig ohne Funktionen auskommen und lieber iterativ von der ersten bis zur letzten Zeile vorgehen. Was ist nun besser?

Funktionen, die in mehreren Dateien vorkommen, sollte man in einer Funktionendatei unterbringen, die man dann in die Scripte per include() einfügen kann, wo sie benötigt werden.
Das Problem an einer solchen Funktionendatei ist, dass der include()-Befehl ausgeführt werden muss und alle in der eingefügten Datei enthaltenen Funktionen interpretiert werden müssen. Es ist also bequem mit Funktionen zu programmieren – ohne Frage.

Da dieser Blog allerdings nicht „PHP Möglichst bequem“ sondern „PHP Performance“ heißt, möchte ich auf die Möglichkeit verweisen, Funktionen nicht zu verwenden, wenn man wirklich jedes Quentchen Performance aus seiner Anwendung holen möchte.
Ich hab da mal was vorbereitet:

function getName() {   return "Jan"; }   function getBeitraege() {   return array("Test 1","Test 2","Test 3"); }   function formatBeitraege($arr) {   $str = "";   foreach($arr as $beitrag) {     $str .= $beitrag."<br />";   }   return $str; }   echo getName(); echo "Neue Beiträge für dich:<br />"; echo formatBeitraege(getBeitraege());

Dieses Script arbeitet mit Funktionen. Als Gegner tritt folgendes Script an, das iterativ vorgeht:

$name = "Jan"; $beitraege = array("Test 1","Test 2","Test 3");   echo "Hallo ".$name; echo "Neue Beiträge für dich:<br />"; foreach($beitraege as $beitrag) {   echo $beitrag."<br />"; }

Beide Scripte arbeiten mit vorgegebenen Daten. In der Praxis würden die Daten bei dem funktionsorientierten Script innerhalb der Funktionen aus der Datenbank geholt bzw. beim iterativen direkt die Queries in der Zeile geschrieben, in der sie benötigt werden.

Auswertung
Als Ergebnis erhält man folgendes:

Datei Gesamtlaufzeit durchschnittliche Laufzeit pro Durchlauf Verhältnis zur schnellsten Variante
result_ausgabe_
iterativ.php
12.748331 s 1.275 ms 100 %
result_ausgabe_
funktionen.php
13.639613 s 1.364 ms 107 % (+ 7%)

Die iterative Methode ist in diesem Fall durchaus schneller. Allerdings wird ein großes Script durch solche Aktionen schnell unübersichtlich. Deshalb kann ich diese Methode nur für PHP-Scripte empfehlen, die wirklich auf jedes Quentchen Geschwindigkeit achten müssen.