Почему расширения прототипов работают намного медленнее, чем функции?Javascript

Форум по Javascript
Ответить
Anonymous
 Почему расширения прототипов работают намного медленнее, чем функции?

Сообщение Anonymous »

Я сравнил скорость обычных функций JavaScript и расширений прототипов.

Код: Выделить всё

function NormalizeSpace(str)
{
return str.trim().replace(/\s+/g, " ");
}

String.prototype.NormalizeSpace = function ()
{
return this.trim().replace(/\s+/g, " ");
};

function MeasureDuration(fun, label)
{
const t0 = performance.now();
for (let i = 0; i < 100000000; i++)
fun();
const t1 = performance.now();

const seconds = (t1 - t0) / 1000;
console.log(label.padEnd(13) + " : " + seconds.toFixed(3).padStart(6) + " s");
}

MeasureDuration(() => NormalizeSpace("abcd"),  "As a function");
MeasureDuration(() => "abcd".NormalizeSpace(), "As a method");
Я обнаружил, что то же самое в расширении выполняется в 3–4 раза медленнее.

Код: Выделить всё

As a function :  4.915 s
As a method   : 18.823 s
Почему? Можешь ускорить?


Подробнее здесь: https://stackoverflow.com/questions/798 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»