@Karl: ohhhh, that was a serious c&p "bug"... :) I was aware that IE6 and 7 don't support getElementsByClassName (see my initial message), still the results of my first test showed similar results for the class selector. I hope I didn't have another c&p bug in there... ;)
@Mike: the pages I'm working on are rather simple (at least compared to something like the Yahoo homepage). So I guess using element.MyClass as a selector is fine for me. I already thought that descending from the closest parent ID come into play, when you have a lot of elements on your page. Thanks guys! On 3 Jul., 01:57, "Michael Geary" <m...@mg.to> wrote: > You can't measure whether one selector will be faster than another on all > possible pages. All you can measure is which is faster on the page you're > testing. > > On a page with only a single <a> element, an 'a.submit' or even just an 'a' > selector will be faster than '#content a.submit', because it's doing less > work. It will find that <a> element right away, and since that's the only > <a> element, you're done right there. Starting the search from #content > makes no difference except to take extra time. > > Contrast that with a page with a thousand <a> elements, where only a few of > those elements (or just one) are inside the #content element. Now using > '#content a.submit' will pay off, because it saves jQuery from having to > scan through all the other <a> elements - it only has to look at the ones > inside the #content element. > > This will vary by browser and by jQuery version, but the point to keep in > mind is that selectors perform differently in very complex pages - and of > course those are the pages where you care the most. > > -Mike > > > From: olsch01 > > > Hi Karl, > > > thanks for your reply. > > > I used jQuery tester in FF2 + 3, IE6, 7 + 8, Opera 9.64 and I > > think also in Safari 4 (on my Win XP machine). The results > > were are all kinda similar. Using the class selector was > > always fastest. > > > I just ran the following test (choosing jQuery 1.3.2 again): > > > test('#content a.submit'); > > test('a.submit'); > > test('.submit'); > > test('("#myDiv").find("span.myClass")'); > > > The results in FF3: > > > #content a.submit: 0.448s > > a.submit: 0.344s > > .submit: 0.331s > > ("#myDiv").find("span.myClass"): 0.399s > > > The results for IE are a bit strange and different from my > > earlier results. > > > IE6: > > > #content a.submit: 1.641s > > a.submit: 1.438s > > .submit: 4.172s > > ("#myDiv").find("span.myClass"): 4.484s > > > IE7 (IE Tester tool): > > > #content a.submit: 2.046s > > a.submit: 1.922s > > .submit: 4.969s > > ("#myDiv").find("span.myClass"): 4.562s > > > IE8 (also IE Tester tool): > > > #content a.submit: 0.25s > > a.submit: 0.219s > > .submit: 0.219s > > ("#myDiv").find("span.myClass"): 3.578s > > > So only using the class name is much slower here. > > > Looking at my earlier test and this one, "a.submit" (i.e. > > element.myClass) has shown the best overall performance . > > > Any comments? :) > > > Cheers > > > On 2 Jul., 19:36, Karl Swedberg <k...@englishrules.com> wrote: > > > On Jul 2, 2009, at 8:45 AM, north wrote: > > > > > Hi, > > > > > I just tested all my jQuery selectors using the jQuery Tester > > > > (http:// jquery.nodnod.net), and the results seem to "contradict" > > > > one thing I read in a performance article: that you > > should descend > > > > from the closest parent ID when using classes in your > > selector (the > > > > article says "April 09", so the latest jQuery version was > > already available). > > > > > In my tests, using just the class selector (like > > span.myClass) was > > > > always fastest (sometimes twice as fast as #myDiv > > span.myClass), and > > > > this in all browsers I tested, not just the ones supporting > > > > getElementsByClassName. > > > > > Maybe descending from the closest parent ID becomes a factor when > > > > you have a lot of elements on you page? Any experiences? > > > > > Thanks > > > > If the selectors aren't causing a discernible bottleneck, I > > wouldn't > > > worry too much about optimizing them. Just out of > > curiosity, though, > > > what happens if you do this: > > > > $('#myDiv').find('span.myClass'); > > > > any faster? > > > > Also, which browser are you testing? > > > > --Karl