PHP / MySQL - Optimierungen
-
Shade: Nochmal die Frage: Hast du dich um die am längsten dauernden Funktionen welche dir der Profiler ausspuckt nun gekümmert? ich denke du solltest dich erst mal dahinter machen statt um die Arrayverwaltung zum zu bauen.
Ein Arraylookup dürfte recht zügig gehen. Arrays sind eine der Stärken von PHP. Schau auch mal im Framework ob du nicht einige Funktionen welche du in PHP gecodet hast nicht fertig im framework findest. (Hab mir vor Urzeiten mal meine eigene array_unique() und so weiter gebastelt weil ich sie nicht kannte... was natürlich erheblich langsamer war.)
Zeig mal die Funktion die am meisten Zeit frisst.
-junix
-
sollten wir besser
mysql_fetch_row
oder
mysql_fetch_assoc
verwenden?mysql_fetch_row ist natürlich schneller, aber aufgrund der Wartbarkeit des Codes, würde ich mysql_fetch_assoc vorziehen (außer es passt Semantisch mysql_fetch_row zu benutzen). Der Unterschied wird in diesem Fall wohl auch nicht so groß sein.
Bei Übergabe "by Value" muss natürlich brutal kopiert werden, da ja eine Kopie erforderlich ist (aber es gibt ja in PHP auch "Call by Reference"). Bei der Rückgabe könnte das anders sein, da es in PHP ja keine Zeiger gibt. Sowas wirst du wohl mit einem Profiler ausprobieren müssen.
Kennt denn irgendwer einen PHP Profiler (Freeware oder Opensource)?
-
Original erstellt von Loggy:
Kennt denn irgendwer einen PHP Profiler (Freeware oder Opensource)?Ich kenn nur den der beim Maguma-Studio integriert ist....
-junix
-
Original erstellt von Loggy:
Bei Übergabe "by Value" muss natürlich brutal kopiert werden, da ja eine Kopie erforderlich ist (aber es gibt ja in PHP auch "Call by Reference").sehr gut, das kann performance bringen.
aber was passiert hier:
function foo()
{
$array=array( ganz viele members, so ca. ~1KB );
return &array;
}ist das wie in C wo dann die referenz tot ist, oder ist PHP da intelligenter?
@junix:
ja, ich habe ein paar teure funktionen versucht zu kürzen - aber das problem ist, das geht nicht wirklich viel wenn das design nicht geändert wird.aber es hat durchaus etwas gebracht.
ich habe vor die script laufzeit auf die hälfte zu drücken - 1/3 habe ich ja schon gekürzt
-
Original erstellt von Shade Of Mine:
**aber was passiert hier:function foo()
{
$array=array( ganz viele members, so ca. ~1KB );
return &array;
}**Wie sich das verhält weiss ich nicht genau, was ich dir aber sicher sagen kann ist, dass du $array oben als call by reference übergeben könntest... (musst die Variable ja eh irgendwo deklarieren. Nur kannst du sie hald eben nicht gleich mit dem Returnwert initialisieren.
-junix