Votre affirmation est simplement faux. cube n'est pas plus rapide que la mul et votre exemple n'est pas le prouver.
En fait, ce qui se passe est que le fonctionnement interne de l'exécution de Javascript prendre plus de temps que la multiplication, résultant en très semblable fois pour mul et le cube. J'ai couru les deux fonctions dans une boucle, juste pour augmenter la différence et le testeur affiche 20219 vs 20197, ce qui est insignifiant. Et BTW, le cube est le "plus lent" un ici.
En outre, cette méthode de profilage ne fonctionne pas parce que Chrome et Firefox sont l'optimisation d'un sort avant de faire des maths à l'intérieur des boucles. Ce que vous pensez est une boucle peut très bien utiliser une valeur mise en cache ou même une fonction mathématique que l'optimisation sait renvoie le même résultat.
Voici le code que j'ai utilisé:
<script>
var max = 0xffffff * 4;
var step = 1 / max;
function cube() {
var result = 0.;
for (var x = 0.; x < 1; x += step) {
result += x * x * x;
}
return result;
}
function mul() {
var result = 0.;
for (var x = 0.; x < 1; x += step) {
result += x * x;
}
return result;
}
function go() {
var s='';
for (var i=0; i<100; i++) {
s+=cube();
s+=mul();
}
console.log(s);
}
go();
</script>
En outre, à titre de référence seulement, regardez la vidéo ici: https://fosdem.org/2016/schedule/event/mozilla_benchmarking_javascript_tips/ où un Firefox gars explique pourquoi microbenchmarking ne veut pas vraiment dire grand-chose.