Whatever benchmarking you do, you'll want to do it in you target JS
engine. Each engine (Trace/JaegerMonkey, V8, Nitro, Carakan, MS) will
perform different ops at different speeds. This is because some are
JIT based systems, some are tracing systems, some simple interpretors,
and some are combinations.

I'm a web-app developer by profession -- about 90% of my coding day is
spent working with JavaScript. Although I agree with Owen that it can
be confusing "getting it right", I would suggest that it's best
practice. If you're checking if something is null, then it's anyway
often simpler to just use shorthand: if(blah) { }. Remember,
undefined, null, 0, '', and false are all "falsy" values -- everything
else is truthy. That means that if you're after a true boolean when
checking if something's falsy, you can just use !!blah.

It's just my two cents, but, because JavaScript is such a flexible
language, I do believe that one should always be completely aware of
what's going on -- in other words, use === unless you very, very
specifically want to allow type coercion. It's kind of like falling
through in switch statemenrs: it canbe realky, really useful, or it
can cause really obscure, hard-to-track-down bugs, the latter being,
in my experience, more common than the former.

- Barry
www.barryvan.com.au

On Monday, March 15, 2010, David Mulder <[email protected]> wrote:
> When reading into this issue somebody suggested === would be faster than ==, 
> I just finished running a very basic benchmark comparing == vs === as far as 
> speed is concerned (string comparison). Unsurprisingly there isn't any speed 
> difference, however the uncertainty of the results in === was far bigger 
> (0.05 s with == and 0.3 s with ===), could anybody check whether this 
> difference is reproducible or whether this is only some random problem with 
> my system. (Tested with chromium on mac). I ran the following script 10 times 
> for both == and ===, it's might be a bit simplistic, but there would have any 
> big difference it should have come out.
>
> <script>start = (new Date()).getTime();string = "Lorem Ipsum is simply dummy 
> text of the printing and typesetting industry. Lorem Ipsum has been the 
> industry's standard dummy text ever since the 1500s, when an unknown printer 
> took a galley of type and scrambled it to make a type specimen book. It has 
> survived not only five centuries, but also the leap into electronic 
> typesetting, remaining essentially unchanged. It was popularised in the 1960s 
> with the release of Letraset sheets containing Lorem Ipsum passages, and more 
> recently with desktop publishing software like Aldus PageMaker including 
> versions of Lorem Ipsum.";
> string2 = "Lorem Ipsum is simply dummy text of the printing and typesetting 
> industry. Lorem Ipsum has been the industry's standard dummy text ever since 
> the 1500s, when an unknown printer took a galley of type and scrambled it to 
> make a type specimen book. It has survived not only five centuries, but also 
> the leap into electronic typesetting, remaining essentially unchanged. It was 
> popularised in the 1960s with the release of Letraset sheets containing Lorem 
> Ipsum passages, and more recently with desktop publishing software like Aldus 
> PageMaker including versions of Lorem Ipsum.";
> for(i=0;i<10000;i++){ if(string===string2){     string=string+" ";     
> string2=string2+" ";           }
> }
>         stop = (new Date()).getTime();console.log(stop-start);</script>
> David Mulder
> On Mon, Mar 15, 2010 at 4:20 PM, David Mulder <[email protected]> wrote:
>
> When reading into this issue somebody suggested === would be faster than ==, 
> I just finished running a very basic benchmark comparing == vs === as far as 
> speed is concerned (string comparison). Unsurprisingly there isn't any speed 
> difference, however the uncertainty of the results in === was far bigger 
> (0.05 s with == and 0.3 s with ===), could anybody check whether this 
> difference is reproducible or whether this is only some random problem with 
> my system. (Tested with chromium on mac). I ran the following script 10 times 
> for both == and ===, it's might be a bit simplistic, but there would have any 
> big difference it should have come out.
>
> <script>start = (new Date()).getTime();string = "Lorem Ipsum is simply dummy 
> text of the printing and typesetting industry. Lorem Ipsum has been the 
> industry's standard dummy text ever since the 1500s, when an unknown printer 
> took a galley of type and scrambled it to make a type specimen book. It has 
> survived not only five centuries, but also the leap into electronic 
> typesetting, remaining essentially unchanged. It was popularised in the 1960s 
> with the release of Letraset sheets containing Lorem Ipsum passages, and more 
> recently with desktop publishing software like Aldus PageMaker including 
> versions of Lorem Ipsum.";
>
> string2 = "Lorem Ipsum is simply dummy text of the printing and typesetting 
> industry. Lorem Ipsum has been the industry's standard dummy text ever since 
> the 1500s, when an unknown printer took a galley of type and scrambled it to 
> make a type specimen book. It has survived not only five centuries, but also 
> the leap into electronic typesetting, remaining essentially unchanged. It was 
> popularised in the 1960s with the release of Letraset sheets containing Lorem 
> Ipsum passages, and more recently with desktop publishing software like Aldus 
> PageMaker including versions of Lorem Ipsum.";
>
> for(i=0;i<10000;i++){ if(string===string2){     string=string+" ";     
> string2=string2+" ";
>       }       }
>         stop = (new Date()).getTime();
> console.log(stop-start);</script>
> David Mulder
> On Mon, Mar 15, 2010 at 4:03 PM, Owen Taylor <--
http://barryvan.com.au/
[email protected]



-- 
http://barryvan.com.au/
[email protected]
_______________________________________________
gnome-shell-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-shell-list

Reply via email to