IE9 Javascript Slowness

Hi all

I’m having difficulty in explaining why the following code runs slower in IE9 than IE8! (Testing in Win 7 IE9 both 32 bit and 64 bit running in VMWare 3 virtual machine on OS X 10.6.7)

Here’s some test code that runs smoothly in about half a second in (latest) FF/Chrome/Safari on OS X, WinXP, and Win7 plus IE7 & 8 on WinXP (for simplicity I removed the tweak that makes it work in IE6).

For some reason I can’t explain, it’s awful in IE9, slow and clunky. Reducing the time for the setTimeout makes it a bit quicker but no less jerky.

I’ve tried removing and benchmarking a number of what might be the choke points (Math.min for example … all with no change.

I’m stumped … can anyone please point me in the right direction?.. preferably one that does not require browser-sniffing?

Here’s the test code …

<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 &lt; sh)
            ) 
            {
                show(e);
            }
            else 
            {
                w.style.height = 'auto'; 
            }                       
    }, 20); 
}   

</script>

All ideas gratefully received… thanks in advance.

GeeBee

PS Posted this on stackoverflow.com without success - hopefully sitepoint.com readers can help?

PPS Sorry if this is a double-post … I thought I posted this some hour or so ago but I can’t see it on the forum at all. Maybe I goofed?

PPPS Hmmm… the editor removed the tabs in the .js, sorry.

It runs smooth-as in IE9 on Vista, so I’d point my finger at either Windows 7 (unlikely) or the virtual machine (more likely).

The next things to investigate would be:

[list][]IE9 on Windows 7
[
]IE9 in a VM on Windows
[*]Standard performance tests in IE9 in Windows VM on the Mac.[/list]

Thanks Paul… that’s very helpful. We don’t have a native Win7 machine (only a little Dell Inspiron Atom running XP) and so can’t test any further.

The test code runs perfectly in IE7 & 8 VMWare Fusion 3 WinXP machines, as you report it does in Vista with IE9. If you or anyone else out there can comment on native Win7 with IE9 that would be very helpful.

Thanks again for your help so far.

Cheers

GeeBee