Umm - that's not true at all. I created a test for you to see: http://dev.jquery.com/~john/ticket/class-speed/
In Firefox 3 I'm getting: ID Raw: 9 ID jQuery: 22 (over 500 queries) Class Raw: 1108 Class jQuery: 778 (over 100 queries) In Safari 3.2 I'm getting: ID Raw: 1 ID jQuery: 3 (over 500 queries) Class Raw: 224 Class jQuery: 184 (over 100 queries) So not only is jQuery's class implementation faster but the ID searching has an approximately 0.026 milliseconds overhead - that's 2.6% of 1 millisecond per query - an absolutely acceptable figure to be able to live with. --John On Mon, Feb 16, 2009 at 8:28 AM, RobG <rg...@iinet.net.au> wrote: > > > > On Feb 16, 5:30 pm, SteelRing <steelr...@gmail.com> wrote: >> This may sound stupid to y'all jquery practitioners, but i wonder >> which method is fastest (recommended) for selecting a cell with a >> class in a big table (think like 1000+ rows 100+ columns): > > Fastest: the browser-native getElementsByClassName (recent Firefox, > Opera, Safari) is 20 to 40 times faster than $('.className'), as a > bonus you get a live collection. > > Alternatively, XPath is probably just as quick but the result isn't > live (supported by the same set of browsers). > > The jQuery way is to use a CSS selector, however it is much slower > than other methods (except perhaps in IE). > > >> ("#tableid tbody tr.rowclass td.cellclass") or is it ("td.cellclass") >> or (".cellclass"). >> >> And how about if the cell happens to have a unique id: >> >> ("#tableid tbody tr#uniquerow td#uniqueid") or just ("#uniqueid") > > If speed really matters, getElementById is more than 7 times faster > than $('#...') in Firefox and 4 times faster in Safari. > > >> Philosophically, the question being is it better to put as much detail >> as structurally already known by the programmer into the selector or >> just anything goes and let jquery handle it as long as it works. > > There is no selector optimisation that I can see in jQuery other than > using getElementById after discovering '#...' (and the overhead of > discovering that means it is 4 to 6 times slower than gEBI). > > As a general rule, keep the selector to a minimum that concisely > describes the element - cells must be inside table, table section and > row elements, including those in a selector doesn't seem to help. An > ID for the starting selector likely does. > > Do some testing for particular circumstances, the most efficient > method will emerge. Don't forget to include browser-native methods > where available. > > > -- > Rob