Mailinglisten-Archive |
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