Почему кастомный массив медленнее, чем ванильная версия? - PullRequest
1 голос
/ 10 сентября 2011

Мне было интересно узнать о скорости различных способов изменения класса встроенного массива JavaScript, поэтому я провел небольшой тест:

http://jsperf.com/array-vs-custom-array

Здесь сравниваются три разных способа добавления функции удаления в массив. Функция remove (), добавленная с Object.create (), кажется, дико (~ 90% в Chrome) медленнее, чем та же функция с .call () или добавленная в Array.prototype. Все они выполняют одну и ту же функцию и фактически выполняют одну и ту же функцию, поэтому мне любопытно, почему существует разница в скорости.

1 Ответ

0 голосов
/ 10 сентября 2011

Я предполагаю, что время поиска функции складывается.

В первом случае вы уже просмотрели адрес remove, поэтому вызов функции просто;

Метод Object.create() должен сначала найти в Array.prototype, а затем найти его в свойствах нового объекта.

Последний метод замены прототипа требует времени для поиска функции в прототипе.

Я не уверен, как проверить эту гипотезу, но я видел нечто подобное раньше при оптимизации кода Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...