Тест: http://jsperf.com/substringing
Итак, я запускаю свой первый клиентский проект на основе HTML5. Он будет разбирать очень, очень большие текстовые файлы, в основном, массив или массивы объектов. Я знаю, как я собираюсь его кодировать; моя главная задача прямо сейчас - получить код парсера так быстро, как я могу его получить, а мой основной тестовый стенд - Chrome. Однако, глядя на различия между методами подстроки (я не касался JavaScript в течение долгого времени), я заметил, что этот тест был невероятно медленным в Chrome по сравнению с FireFox. Почему?
Мое первое предположение заключается в том, что он связан с тем, как FireFox JS-движок обрабатывал строковые объекты, а для FireFox эта операция - простое манипулирование указателями, в то время как для Chrome он действительно делает печатные копии. Но я не уверен, почему Chrome не будет делать манипуляции с указателями или почему FireFox. У кого-нибудь есть понимание?
JSPerf, похоже, выбрасывает мои результаты FireFox, а не выводит их на BrowserScope. Для меня я получаю 9,568,203 ± 1,44% Ops/sec на .substr()
в FF4.
Изменить: Таким образом, я вижу результат производительности FF3.5, находящийся на самом деле ниже Chrome. Поэтому я решил проверить гипотезу о моих указателях. Это привело меня к 2nd revision моего теста подстрок, который делает 1,092,718±1.62%
Ops/sec в FF4 в сравнении с 1,195±3.81%
Ops/sec в Chrome, до 1000 раз быстрее, но все же необъяснимое различие в производительности.
Постскриптум: Нет, мне неинтересно, что лиз об Internet Explorer. Я обеспокоен попыткой улучшить свои навыки и узнать этот язык на более глубоком уровне.