30-09-2011, 09:19 PM
Oui, plus simples à écrire, mais dans certains cas, il vaut mieux passer 2 jours sur une fonction qui sera 100x plus rapide.
Imagine qu'il failles 3 secondes pour éxécuter la fonction récursive, et qu'on veuille executer cette fonction environ 100.000 fois (dans mon cas, ce n'est pas pour du php, mais pour un compilateur de map c++), soit, au total, 300.000 secondes d'éxecution (3,5 jours en gros). En y passant 2 jours pour tomber à 0.03s / execution (total: 3000 secondes, 1h), on est franchement gagnant.
De plus, dans mon cas, le compilateur sera lancé sur plusieurs ordinateurs (le programme s'éxécute en local: chaque utilisateur lance son instance), donc, si le programme dure N secondes et qu'il y a P utilisateurs, je vais faire perdre l'équivalent de N*P secondes aux utilisateurs, et cela commence à faire beaucoup quand le nombre d'utilisateur augmente!
Bref, je suis d'accord que, dans certains cas (peut-être le cas présent), un récursif suffit peut-être, mais disposer d'un non-récursif permet non seulement à ceux qui avaient le récursif d'avoir une autre piste, mais cela ouvre la porte à ceux qui avaient besoin d'un non-récursif. En gros, c'est que du bonus.
& +1, pourquoi l'objet impliquerait le récursif? A moins que tu n'ai, en tête, l'idée d'un objet = 1 point de spirale, et que la classe de cet objet dispose d'une méthode "creer_prochain_point()".
Imagine qu'il failles 3 secondes pour éxécuter la fonction récursive, et qu'on veuille executer cette fonction environ 100.000 fois (dans mon cas, ce n'est pas pour du php, mais pour un compilateur de map c++), soit, au total, 300.000 secondes d'éxecution (3,5 jours en gros). En y passant 2 jours pour tomber à 0.03s / execution (total: 3000 secondes, 1h), on est franchement gagnant.
De plus, dans mon cas, le compilateur sera lancé sur plusieurs ordinateurs (le programme s'éxécute en local: chaque utilisateur lance son instance), donc, si le programme dure N secondes et qu'il y a P utilisateurs, je vais faire perdre l'équivalent de N*P secondes aux utilisateurs, et cela commence à faire beaucoup quand le nombre d'utilisateur augmente!
Bref, je suis d'accord que, dans certains cas (peut-être le cas présent), un récursif suffit peut-être, mais disposer d'un non-récursif permet non seulement à ceux qui avaient le récursif d'avoir une autre piste, mais cela ouvre la porte à ceux qui avaient besoin d'un non-récursif. En gros, c'est que du bonus.
& +1, pourquoi l'objet impliquerait le récursif? A moins que tu n'ai, en tête, l'idée d'un objet = 1 point de spirale, et que la classe de cet objet dispose d'une méthode "creer_prochain_point()".