phpbar.de logo

Mailinglisten-Archive

[php] Prinzipiell: Performance-Probleme und Loesungen?

[php] Prinzipiell: Performance-Probleme und Loesungen?

Stephan Noller Stephan.Noller_(at)_uni-koeln.de
Mon, 8 May 2000 20:05:39 +0200


Erstmal vielen Dank fuer die bisherigen Hinweise!

> Foreach mach eine Kopie eines jeden Array-Elementes, ist also sicher ein
> Performance- und Speicherfresser.
o.k., habe alle foreach durch einfache for-schleifen ersetzt, ist das
besser?

> Fuer mehr Tips wirst Du eine ungefaehre Workflow-Beschreibung Deines
> Programmes zeigen muessen.

Nichts lieber als das:
Erlaeuterung: Es gibt ein Array mit Problemfaellen ($ergebnis_temp), und ein
mehrdimensionales Array in dem jeweils pro Ebene paare von Elementen
abgespeichert sind ($ergebnis2). Aufgabe des Skriptes ist es nun,
herauszufinden ob sich anhand irgendeiner Kombination der vorhandenen Paare
($var1 und $var2) ein Weg von $x nach $y konstruieren laesst.
Mir waere halt schon viel geholfen, wenn Ihr mir vielleicht den einen oder
anderen Hinweis auf Moeglichkeiten zur Performance-Verbesserung geben
koenntet. Ich habe mir auch den Artikel ueber Reference Counting und
Aliasing durchgelesen, auf den Egon hingewiesen hat. Mir ist leider nicht
ganz klar geworden, inwiefern ich meinen Code da unten so optimieren
koennte, das diese neuen Zend-Mechanismen optimal genutzt werden. Koennt Ihr
mir einen Hinweis geben??
-----------snip---------------------
for($t=0;$t<count($ergebnis_temp);$t++) //Alle Problemfaelle durchgehen
(for1)
{
$x=$ergebnis_temp[$t][0];
$y=$ergebnis_temp[$t][1];
$abbruch=0;
for($z=0;$z<count($ergebnis2);$z++) //Ergebnis-Ebenen hochzaehlen (for2)
	{
	if($abbruch==1)
		break;
for($p=0;$p<count($ergebnis2[$z]);$p++) //Alle Ergebnisse einer Ebene
vergleichen.... (for3)
	{
	$var1=$ergebnis2[$z][$p][1]; //zweiter Teil des 1. Vergleichsstrings
	$var1a=$ergebnis2[$z][$p][0]; //erster Teil des 1. Vergleichsstrings
	for($a=0;$a<count($ergebnis2[$z]);$a++) //...mit allen anderen
Moeglichkeiten der Ebene (for4)
		{
		$var2=$ergebnis2[$z][$a][0];
		$var2a=$ergebnis2[$z][$a][1];
		if($var1==$var2) //1. if
			{
			if($var1a==$x and $var2a==$y) //2. if
				{
				$erg[$x.$y]=($z+1+$w+1);
				$abbruch=1;
				break;
				}
			}//Ende 1.if
		} //Ende for4
	} //Ende for3, naechste Ebene (->for2)
    }//Ende for2, naechster Fall (->for1)
}//Ende for1, alle Problemfaelle durchlaufen
--------------------------snip----------------------------------------------
-----------



php::bar PHP Wiki   -   Listenarchive