Je me répond à moi même pour me dire que mon exemple était particulièrement stupide, celui ci est bien mieux :
{- f est ici redéfini à chaque appel de fib car le compilo (ghc 7.6.3 en O0) ne détecte pas que f ne dépend pas de n (le parametre de fib), en revanche en O2 il le détecte-}fibn=letf0=1f1=1fn=fib(n-1)+fib(n-2)infn{- pour fib' on explicite le fait que la définition (complete) de f est connue à la compilation, le compilo peut donc optimiser ça en fib' 0 = 1 fib' 1 = 1 fib' n = fib' (n-1) + fib' (n-2)-}fib'=letf0=1f1=1fn=fib'(n-1)+fib'(n-2)inf-- sur mon petit test à l'arrache, fib' 40 s'execute en 28 seconde, fib 40 en 55 secondes
[^] # Re: euh?!
Posté par Zylabon . En réponse au journal Retour d'expérience avec le langage J. Évalué à 3.
Je me répond à moi même pour me dire que mon exemple était particulièrement stupide, celui ci est bien mieux :
Please do not feed the trolls