Согласно JSperf, несколько функций готовности DOM действительно замедляют страницу во всех браузерах, и этого достаточно, чтобы я перестроил большую часть своего собственного кода, чтобы приспособиться к этому новому открытию. Конечно, IE медленнее, но тест не настолько информативен, как я надеялся, потому что он намного медленнее, даже без проверки готовности DOM. От этого нужно избавиться, по возможности, минимизировать использование этих функций DOM ready.
Результаты в Chrome:
- Один $ (документ) .ready () : 734 811 операций в секунду
- Несколько $ (document) .ready () [4 блока] : 151 989 операций в секунду
- Нет $ (документ) .ready () : 208 965 555 операций / сек
Результаты в IE8:
- Один $ (документ) .ready () : 26 349 операций / сек
- Несколько $ (document) .ready () [4 блока] : 5,971 операций в секунду
- Нет $ (документ) .ready () : 5000 159 операций в секунду
Анализ этих метрик:
- В Chrome проверка No DOM ready занимает 0.35% времени готовности DOM
проверка занимает
- В IE проверка готовности DOM не занимает 0,53% времени DOM
готовая проверка занимает
Только эти данные говорят нам о том, что функция doScrollCheck()
значительно снижает производительность .
Как говорится:
- Проверка готовности DOM в Chrome * в 1068 * 27,98 раз быстрее , чем в IE
- В Chrome выполнение 4 проверок готовности DOM * в 1072 * 25,45 раза быстрее , чем в IE
- Отсутствие проверки готовности DOM * в 1076 * 41,79 раз быстрее в Chrome, чем IE
На первый взгляд, это выглядит безнадежно - но если подумать, страница IE без функции готовности DOM выполняла более 5 миллионов операций в секунду, а одна функция готовности DOM в Chrome выполняла менее миллиона. Это говорит мне, что если вам удастся сказать JQuery использовать более дружественную функцию doScrollCheck()
, которая, скажем, проверяет, прокручивается ли documentElement
каждые 100 мс, а не каждые 1 мс, вы можете увидеть время загрузки страницы более конкурентоспособным по сравнению с chrome.
Что этот эталонный тест на самом деле говорит мне о том, что даже проверка DOMContentLoaded
медленная до чертиков - нет никакого оправдания переходу с 209 миллионов операций в секунду до менее миллиона на Chrome.
http://jsperf.com/docready/3