Thanks for joining the conversation.
It is very interesting that the object member method is so much faster, but it has the same problem as the other object-based methods--it isn't reliable:
Object.prototype['<b>'] = true;
[]['<b>'] || false;
Object.prototype['<b>'] = true;
[]['<b>'] || false; // returns true
[]['<b>'] || false; // returns true
Also, IE 7 cannot run your test case since it doesn't have Array.indexOf. IE also kept throwing warnings about unresponsive script so I'm sure that will interfere with the testing anyway.
There simply is no clear performance winner here. In any case is most correct, clear, and concise (in that order) is more important than performance (until a true bottleneck is found). I find the correctness of the object methods suspect, leaving regular expressions or Array.indexOf better candidates, in my mind.
Erik
Object.prototype['<b>'] = true;
[]['<b>'] || false;
Object.prototype['<b>'] = true;
[]['<b>'] || false;
On Tue, Sep 4, 2012 at 1:01 PM, Torsten Walter <twalter80@gmail.com> wrote:
I've put up a test case on jsPerf: http://jsperf.com/comparison-performanceDepending on the engine you might see varying results. You will also notice that your examples aren't the most efficient ones.The fastest on Safari 6 is the member lookup.The str in obj is slightly slower.Regular expressions were the slowest in my case. You can get rid of the positive lookahead if you want exact match anyway to speed it up slightly.I don't have the setup right here to test more browsers at the moment.Cheers--On Sun, Aug 26, 2012 at 8:29 PM, thor <jyng7@hotmail.com> wrote:
Thank you, illandril! :-)To view this discussion on the web visit https://groups.google.com/d/msg/javascript-information/-/geGf5LFbYdgJ.--
On Saturday, August 25, 2012 12:12:12 PM UTC-5, illandril wrote:With my tests...Chrome 22: regular expressionsIE9: str in objFF11: str in obj
On Friday, August 24, 2012 10:53:05 PM UTC-4, thor wrote:Which do you think is more efficient when checking if a string is either "<i>" or "<b>"?var obj = {'<b>': null, '<i>': null};var str = '<i>';var tag = str.search(/<(?:b|i)>/);orvar tag = (str in obj);Thanks!
You received this message because you are subscribed to the Google Groups "JavaScript Forum" group.
To post to this group, send email to javascript-information@googlegroups.com.
To unsubscribe from this group, send email to javascript-information+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/javascript-information?hl=en.
--
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.