Iteration oder Rekursion
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
befehlen
beispiel
date
datei
daten
fragen
funktion
gewinnen
lehrer
ordner
rekursion
sekunde
sen
speicher
stack
typische parade
verzeichnis
vier
wesentlichen performance
-
Du machst das doch bereits iterativ. Oder meintest du rekursiv?
Dein Skript l?uft viel zu lange, f?r die paar Sachen, die da gemacht werden. Wenn du etwas deutlicher beschreibst, wie dein Code aussieht (am besten in Pseudocode), kann man vielleicht schon rausfinden, was bei dir so lange dauert. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich habe ein Script geschrieben das mir aus jeder Datei das ?nderungsdatum auslie?t, sortiert und das h?chste das ich habe ist dann mein aktuelles Homepage Update (so wie auf meiner Seite http://www.elpra.de rechts unten).
Wenn du nur das h?chste Datum haben willst brauchst du nicht zu sortieren.
Ich lasse das script alle vier Stunden per Cronjob ausf?hren und in eine Datenbank schreiben, weil es einfach Ladezeit kosten w?rde, da das Script doch einige Sekunden braucht zum ablaufen.
Einige Sekunden???
Wie viele Dateien hast du denn???
Also das halte ich schon f?r sehr komisch.
Daher eine Frage, mehr so aus Interesse:
L?sst sich das Problem auch durch Iteration l?sen und wenn ja, bring das einen wesentlichen Performance Gewinn?
Iteration und Rekursion lassen sich von der einen in die andere ?berf?hren.
Und in wesentlichen werden die selben Operationen durchgef?hrt.
Somit sind beide ungef?hr gleich lang. Allerdings verbraucht Rekursion oft mehr Speicher ist daf?r aber in manchen F?llen wesentlich einfacher zu Programieren.
Edit
Ach ja Iterativ k?nnte man das mit einen Stack machen.
stack.put = getOrdner;
datei = stack.pop
lastDate= datei.date
while (!stack.leer){
datei = stack.pop
if(datei == ordner) {
stack.put = datei.getOrdner
}
if (lastDate > datei.date){
lastDate = datei.date
}
}
P.S. zu dem was dein Lehrer sagt, sage ich besser mal nichts.
Jens -
Iteration - Rekursion., was schneller und "Was genau ist Iteration, wie wendet man es an und was sind so typische Parade Iteration Beispiele".
Jeder andere w?rde Fragen was Rekursion ist.
Vielleicht schaust du mal hier:
http://de.wikipedia.org/wiki/Iteration
Es ist zwar nur ein kleiner Teil welcher sich mit Programmen besch?ftigt, aber das andere ist auch lesenswert.
Ach ja.
Mit Iteration hattest du bestimmt schon zutun.
Jede For-Schleife ist eine Iteration.
Genau so wie While- und Until- Schleifen.
Eigendlich lernt man zuerst Iteration.
Jens -
Alsoooo... f?r den Unterschied zwischen Iteration und Rekursion hast du dir das denkbar schlechteste Beispiel ausgesucht, dann das Durchsuchen von Verzeichnisstrukturen kann man iterativ nur machen, wenn man GOTO-Befehle benutzt (ich weiss jetzt nicht einmal, ob es die unter PHP ?berhaupt gibt) oder mehrdimensionale Felder zur Zwischenspeicherung aufbaut. Vielleicht solltest du dir ein anderes Beispiel raussuchen *g*
Ganz allgemein wegen der Performanceunterschiede bei Iteration und Rekursion:
Rekursionen sind langsamer, weil f?r jeden Aufruf und Return der Funktion der Stack manipuliert werden muss, um die Parameter der Funktion und R?ckgabewerte zwischen zu speichern bzw. diese Werte von ?lteren Aufrufen der Funktion wieder in den Stack zu schieben. Diese gilt f?r Sprachen wie C, Pascal, Delphi, Java, etc.. Ob das aber auch f?r PHP gilt, weiss ich nicht. Es k?nnte sein, das der PHP-Parser alles nur auf einen eigenen "Stack" schiebt, was dann eigentlich nicht viel lansamer sein sollte als andere Speicherstellen bei einer iterativen Programmierweise zu manipulieren. Aber dazu m?sste man mal in den PHP-Code (also den des Parsers) schauen. Download unter www.php.net
Ich hab da jedenfalls keinen Bock zu -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage