IE9 Javascript медленнее, чем IE8 - это странно! - PullRequest
5 голосов
/ 08 апреля 2011

Мне трудно объяснить, почему следующий код работает медленнее в 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>

Ответы [ 3 ]

4 голосов
/ 08 июля 2011

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

1 голос
/ 16 августа 2012

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

1 голос
/ 08 апреля 2011

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

...