Michael, I thought I had thanked you for your post yesterday but don't see that here today. Maybe I did a 'reply to author'?
In any event, thanks again. I implemented your code and see where I went wrong. Also thanks for a good demonstration of how to use the call ( ) function -- very nice. I've always found the online descriptions of call( ) rather confusing; yours is a nice clear demonstration of its usefulness. You are correct that my 'this' turned out to be the window object. Bad! Howard On Nov 11, 10:23 am, "Michael Geary" <[EMAIL PROTECTED]> wrote: > JSLitmus isn't testing what it appears to be testing. > > In the 'use instance var' case, take a look at what "this" is inside the > test function. I'll bet it's the window object. That is the reason it's so > much slower in Firefox. I didn't try it in IE, but the difference is > probably even more dramatic there. > > It's not surprising that there is little difference in Chrome, with its > completely different architecture. > > If 'this' a native JavaScript object, it's still slower to reference > "this.foo" than it would be to reference "foo", but not by such a great > difference. > > Compare with this test that provides known values of "this": > > var total = 1000000; > function Test() {} > Test.prototype.one = function() { > var t1 = +new Date; > var n = total; > var x = 0; > while( n-- ) x++; > var t2 = +new Date; > console.log( ( t2 - t1 ) / 1000 );}; > > Test.prototype.two = function() { > var t1 = +new Date; > var n = total; > this.x = 0; > while( n-- ) this.x++; > var t2 = +new Date; > console.log( ( t2 - t1 ) / 1000 ); > > }; > > test = new Test; > test.one(); > test.two(); > > test.one.call(window); > test.two.call(window); > > In an example run, that logged these values to the Firebug console: > > 0.051 - test.one() > 0.199 - test.two() > 0.052 - test.one.call(window) > 2.408 - test.two.call(window) > > As you can see, test.two() is several times slower than test.one() when it's > called as a method of the test object, but dramatically slower when it's > called as a method of the window object. > > -Mike > > > From: howardk > > > I've been experimenting with several different coding styles > > for plug- ins. Lately I've been curious about the difference > > in performance between using local variables vs. instance > > variables for storing state. JSLitmus, while not itself > > jQuery-based, has just given me the answers I've been looking > > for. I found them a bit surprising: > > > http://www.fatdog.com/litmus_tests/InstanceVsLocalTest.html > > > (Apologies for the color scheme! :-) > >Howard