Firefox 9.0.1 удивил меня, обнаружив алгоритм заполнения чисел Ω (log n) с помощью метода петли Ω (n), когда n мало. В любом другом браузере, который я видел, цикл медленнее , даже для небольших значений n.Я знаю, что все браузеры работают над оптимизацией JS, но поскольку все другие современные браузеры показывают, что цикл работает медленнее, есть ли объяснение поведению в 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;
}
Обновление: Я не думаю, что это связано с первоначальным вопросом, но я только что обнаружил, что IE 9 переключает поведение при переключении с 32- на 64-битные режимы.В 32-битном режиме метод Math побеждает.В 64-битном режиме метод Loop побеждает.Просто подумал, что я должен указать на это.
Обновление 2: MAK поймал меня в своем комментарии ниже.Математический метод - это не Ω (1), скорее он больше похож на Ω (log n).