[jQuery] Re: JSLitmus invaluable tool

2008-11-12 Thread howardk

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 = 100;
 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


[jQuery] Re: JSLitmus invaluable tool

2008-11-11 Thread Michael Geary

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 = 100;
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
 



[jQuery] Re: JSLitmus invaluable tool

2008-11-11 Thread Erik Beeson
With Normalize checked, I get infinity for both of them. With it unchecked,
I get 12.6M and 10.9M.
I'm using google chrome (which the test reports as Safari).

--Erik

On Tue, Nov 11, 2008 at 9:16 AM, howardk [EMAIL PROTECTED] wrote:


 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