Ne panique pas, ils ne savent pas coder en R. Le code est plein de boucles, ce qui est une aberration en R.
pisum = function() {
t = 0.0
for (j in 1:500) {
t = 0.0
for (k in 1:10000) {
t = t + 1.0/(k*k)
}
}
return(t)
}
pisum2 = function() {
t = 0.0
for (j in 1:500) {
t = sum(1/((1:10000)^2))
}
return(t)
}
pisum3 <- function() {
return(replicate(500, sum(1/((1:10000)^2)))[1])
}
pisum4 <- function() {
require(compiler)
f <- cmpfun(function() {sum(1/((1:10000)^2))})
return(replicate(500, f)[1])
}
> system.time(pisum())
user system elapsed
7.180 0.000 7.197
> system.time(pisum2())
user system elapsed
0.070 0.000 0.069
> system.time(pisum3())
user system elapsed
0.070 0.000 0.069
> system.time(pisum4())
user system elapsed
0.000 0.000 0.006
Voila, quand on sait utiliser R, on diminue par 100 le temps d'exécution. Et en utilisant le bytecode, la fonction s'exécute trop rapidement pour la mesurer—et encore, je récupère les 500 sorties identiques dans un vecteur, donc il faudrait en plus retirer l'étape inutile d'allocation d'espace. Conclusion : comme d'hab, benchmark stupide.
[^] # Re: Wow !
Posté par arnaudus . En réponse à la dépêche Version 1.0 de Julia. Évalué à 10.
Ne panique pas, ils ne savent pas coder en R. Le code est plein de boucles, ce qui est une aberration en R.
> system.time(pisum())user system elapsed
7.180 0.000 7.197
> system.time(pisum2())
user system elapsed
0.070 0.000 0.069
> system.time(pisum3())
user system elapsed
0.070 0.000 0.069
> system.time(pisum4())
user system elapsed
0.000 0.000 0.006
Voila, quand on sait utiliser R, on diminue par 100 le temps d'exécution. Et en utilisant le bytecode, la fonction s'exécute trop rapidement pour la mesurer—et encore, je récupère les 500 sorties identiques dans un vecteur, donc il faudrait en plus retirer l'étape inutile d'allocation d'espace. Conclusion : comme d'hab, benchmark stupide.