IE9 Javascript медленнее, чем IE8 — это странно!

#javascript #internet-explorer-9

#javascript #internet-explorer-9

Вопрос:

Мне трудно объяснить, почему следующий код работает медленнее в IE9, чем в IE8!

Вот некоторый тестовый код, который выполняется плавно примерно за полсекунды в (последней версии) FF / Chrome / Safari на OS X, WinXP и Win7, плюс IE7 и 8 на WinXP (для простоты я удалил настройку, которая заставляет его работать в IE6).

По какой-то причине, которую я не могу объяснить, это ужасно в IE9, медленно и неуклюже. Сокращение времени для setTimeout делает его немного быстрее, но не менее прерывистым.

Я попытался удалить и сравнить ряд возможных проблем (например, Math.min … все без изменений.

Я в тупике… кто-нибудь, пожалуйста, может указать мне правильное направление?… предпочтительно тот, который не требует прослушивания браузером?

Вот тестовый код…

 <div id = 'panel' class='noShow' style='background-color: #aaa;'>
    <div id = 'wrapper' class='slideWrapper'>
        <p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p>
    </div>
</div>


<script type = 'text/javaScript'>

    var e = document.getElementById('panel');
    var w = document.getElementById('wrapper');

    w.style.overflow = 'hidden';                                                
    w.style.height = '1px'; 
    var sh = w.scrollHeight;
    show();
    function show()
    {
        setTimeout(function()
           {
                w.style.height = Math.min(sh, (w.offsetHeight   Math.ceil(sh/15)))   'px';  
                if(
                     (w.offsetHeight < sh)
                ) 
                {
                    show(e);
                }
                else 
                {
                    w.style.height = 'auto'; 
                }                       
        }, 20); 
    }   
</script>
  

Ответ №1:

В IE9 по умолчанию используется программный рендеринг на виртуальных машинах VMware (по состоянию на 8.07.2011) в ближайшем будущем должно быть выпущено исправление, но в этом сообщении в блоге не указаны временные рамки.

Комментарии:

1. Спасибо за это @TodK … очень полезно… Я думаю, это объясняет это

Ответ №2:

Вы используете 64-разрядную версию IE 9 или 32-разрядную версию? 64-разрядная версия не запускает Chakra, который является оптимизированным движком JavaScript из 32-разрядной версии

Комментарии:

1. Хороший вопрос … спасибо за напоминание. 64-разрядная версия Win7 в VMware Fusion 3… приносим извинения за упущение.

2. Ах!… хороший вопрос… 64-разрядная версия Win7 в VMware Fusion 3… приношу извинения за то, что опустил эти данные.

3. Упс! Извините за двойной пост … Я нажимаю <enter>! Я думаю, это может быть моим объяснением. Я скачаю 32-разрядную версию, попробую это и сообщу … хотя, возможно, потребуется несколько дней.

4. Я имею в виду 32-разрядную версию IE 9, вы можете запустить ее без проблем на 64-разрядной версии win 7

5. Ах… это ново для меня… Я проверю и сообщу

Ответ №3:

При запуске в виртуализированной среде всегда наблюдаются странные колебания производительности. Выбор драйверов и то, как программное обеспечение разгружает обработку, окажут влияние. Вы пробовали обновлять драйверы в своей системе?