Firefox 9.0.1 m'a surpris en faisant apparaître mon algorithme de remplissage de nombres (log n) avec une méthode à (n) boucles lorsque n est petit. Dans tous les autres navigateurs que j'ai vus, la boucle est plus lente. Je sais que tous les navigateurs travaillent à l'optimisation des JS, mais puisque tous les autres navigateurs modernes montrent que la boucle est plus lente, y a-t-il une explication à ce comportement dans Firefox 9 ?
// (log n)
function padNumberMath(number, length) {
var N = Math.pow(10, length);
return number < N ? ("" + (N + number)).slice(1) : "" + number
}
// (n):
function padNumberLoop(number, length) {
var my_string = '' + number;
while (my_string.length < length) {
my_string = '0' + my_string;
}
return my_string;
}
Mise à jour : Je ne pense pas que cela soit lié à la question initiale, mais je viens de découvrir qu'IE 9 change de comportement lorsqu'il passe du mode 32 bits au mode 64 bits. En mode 32 bits, c'est la méthode Math qui l'emporte. En mode 64 bits, c'est la méthode Loop qui l'emporte. J'ai juste pensé que je devais le signaler.
Mise à jour 2 : MAK m'a surpris dans son commentaire ci-dessous. La méthode mathématique n'est pas (1), c'est probablement plus comme (log n).