anpera.net
https://anpera.homeip.net/phpbb3/

Allgemeine Fragen in Sachen performence
https://anpera.homeip.net/phpbb3/viewtopic.php?f=12&t=2212
Seite 1 von 1

Autor:  Garlant [ Do 09 Feb, 2006 13:30 ]
Betreff des Beitrags:  Allgemeine Fragen in Sachen performence

Ich hoffe, das passt hier rein, hat allerdings nichts mit Logd zu tun. ;)

Sind arrays allgemein performence kostend oder sind sie eher performence "günstig"?

Es gibt ja nun mehrere Möglichkeiten für eine bestimmte Zahl etwas ausgeben zu lassen.
z.b Ifabfragen
[php]If ($row['x']=='0'){
echo('Hallo Anpera');
} else if $row['x']=='1'){
echo('hallo Kevz');
} else if $row['x']=='2'){
echo('hallo xy');
}....[/php]

Das gleiche als array [php]$hallo = array(0=>'Hallo Anpera',1=>'Hallo kevz',2=>'Hallo xyz');
echo($hallo[$row['x']]);[/php]

Ist jetzt ein Beispiel, auch die Namen sind mal ganz schnell und wahlos gewählt. ist array da nun in der performence besser oder allgemein ic/case abfragen?

Autor:  Kevz [ Do 09 Feb, 2006 13:53 ]
Betreff des Beitrags: 

Ich würde jetzt grob sagen, das untere ist schneller. Einfach aus der Hinsicht, weil du direkt nach einem Key fragst, und oben ist eben zu umständlich du machst erst zahlreiche If abfragen und und und... Du kannst falls ein Key nicht im Array vorhanden ist in_array benutzt wäre auch eine möglichkeit. Aber die untere möglichkeit ist nach der ansicht eig. schneller. Ansonsten mach mal nen Benchmark test ;)

Autor:  Devilzimti [ Do 09 Feb, 2006 16:15 ]
Betreff des Beitrags: 

Das zweite muss nicht schneller sein, man muss wissen, wie PHP den Speicher besetzt.
Also wie lange es dauert, das array im speicher abzulegen und ob ifs nicht doch schnelller sind..
Aber ich würde ausm Bauch 2 sagen..

Dem wofür gibt es sonst arrays? :P

Autor:  Kevz [ Do 09 Feb, 2006 17:27 ]
Betreff des Beitrags: 

Jop. Arrays sind was tolles machen aber auch Deprimierent wenn man nicht mehr weiter kommt :lol:

Autor:  Chaosmaker [ Do 09 Feb, 2006 18:56 ]
Betreff des Beitrags: 

Das untere halte ich nicht für sonderlich schnell, allerdings ist das obere auch sehr schlecht. Statt "else if" sollte man immer "elseif" benutzen, da der Befehl speziell optimiert ist und (marginal) schneller läuft. Allerdings ist generell ab etwa 3 Fällen - wie im Beispiel - ein switch vorzuziehen.
Also hier:
[php]switch ($row['x']) {
case 1: echo 'blablubb'; break;
case 2: echo 'pizza'; break;
case 3: echo 'nix';
}
[/php]
Dabei erfolgt nur eine einzige Prüfung, der Sprung zum entsprechenden Fall ist sehr schnell. Die Lösung ist daher das Performanteste.

Die Speicherbelegung mit einem zusätzlichen Array wie im 2. Vorschlag würde ich übrigens generell vermeiden, wenn es nur um Performance geht.
Sinnvoll ist es dann, wenn es der Übersichtlichkeit dient (z.B. wenn es 30 gültige Fälle mit viel Code pro Fall gibt - ein switch ist da zwar toll, aber im Array sieht man sofort die möglichen Werte).

In diesen geringfügigen Regionen verwende ich eigentlich meist die übersichtlichste Lösung. Nur wenn die Übersicht bei mehreren Möglichkeiten gleichermaßen gut ist, ziehe ich die schnellste vor.

Autor:  Garlant [ Fr 10 Feb, 2006 11:52 ]
Betreff des Beitrags: 

Ich danke euch für eure Ausführungen, ich denke nun bin ich ein klein wenig schlauer.
Mir geht es um Übersicht und Performence im gleichen Maße.
Gerade in Foren sind längere Ladezeiten nicht so toll und Add Ons könnten diese ja noch in die Höhe steigen lassen(die Ladezeiten), durch schlechte Programmierung.

Mfg Garlant

Autor:  Devilzimti [ Fr 10 Feb, 2006 13:27 ]
Betreff des Beitrags: 

Naja, das obrige macht nur einen nicht wahrnehmbaren unterschied :P

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/