Большие подстроки ~ в 9000 раз быстрее в Firefox, чем в Chrome: почему?

Тест: http://jsperf.com/substringing

Итак, я начинаю свой очень первый клиентский проект на базе браузера HTML5. Придется разбирать очень, очень большие текстовые файлы в массив или массивы объектов. Я знаю, как я собираюсь его кодировать; Моя основная задача сейчас - получить код парсера как можно быстрее, и моя основная тестовая площадка - это Chrome. Однако, глядя на различия между методами подстроки (я давно не касался JavaScript), я заметил, что этот тест был невероятно медленным в Chrome по сравнению с FireFox. Почему?

Мое первое предположение состоит в том, что это связано с тем, как JS-движок FireFox будет обрабатывать строковые объекты, и что для FireFox эта операция представляет собой простую манипуляцию с указателем, тогда как для Chrome она фактически делает копии. Но я не уверен, почему Chrome не выполняет манипуляции с указателями или почему FireFox делает . У кого-нибудь есть понимание?

JSPerf, похоже, выкидывает мои результаты FireFox, не отображая их в BrowserScope. Для меня я получаю 9 568 203 ± 1,44% операций в секунду на .substr () в FF4.

Редактировать: Итак, я вижу результат производительности FF3.5 там, на самом деле ниже Chrome. Поэтому я решил проверить свою гипотезу об указателях. Это привело меня к второй версии моего теста Substrings, который выполняет 1,092,718 ± 1,62% операций в секунду в FF4 по сравнению с 1,195 ± 3,81% операций в секунду. в Chrome - всего лишь в 1000 раз быстрее, но все же необъяснимая разница в производительности.

Постскриптум: Нет, меня не интересует одна фраза об Internet Explorer. Меня беспокоит попытка улучшить свои навыки и узнать этот язык на более глубоком уровне.

19
задан Tim 15 July 2013 в 15:45
поделиться