[jQuery] Re: jQuery select all vs conventional javascript

2008-11-20 Thread Michael Geary

It's no surprise that the jQuery code is slower: you can always outperform
jQuery with a custom-tuned loop. After all, jQuery has to do everything that
your custom loop does, plus much more. For one thing, jQuery has to first
build an array of all the items and then traverse that array. Your custom
code doesn't have to build an array at all.

You may be able to pick up a tiny bit more speed in your loop. First, make
sure to var your i variable. If you don't var it, i is actually a
property of the window object, and if this code is inside a function, that
will make it slower to access the variable.

Also, don't look up myListBox.length every time through the loop; you can
either look it up once at the beginning or not at all.

I would try these three variations on your loop and see if any of them comes
up faster:

for( var i = 0, n = myListBox.length;  i  n; )
myListBox[i++].selected = true;

for( var i = myListBox.length;  i  0; )
myListBox[--i].selected = true;

for( var i = -1, option; option = myListBox[++i]; )
option.selected = true;

I'll be curious to know the result.

My guess is that one of those may be a bit faster, but still too slow to be
acceptable. If that's the case, there may be nothing to be done for it
except to do the selecting in batches of, say, 1000 elements with a short
timeout between each batch. That way the browser will remain responsive
while you run the loop.

-Mike

 From: JQueryProgrammer
 
 I have been using jQuery for quite some time now. For one of 
 my projects, I needed to select all the options in the 
 listbox which were 10,000+. I tried to do a comparison 
 between using jQuery and conventional javascript and here are 
 my findings:
 
 1. With jQuery:
 Code:  $(#myListBox *).attr(selected,selected);
 Time taken: 7+ milliseconds
 
 2. With JavaScript:
 Code:  for( i=0; i  myListBox.length; i++) { myListBox
 [i].selected = true; }
 Time taken: 21000+ milliseconds
 
 Can anyone provide with some better code or justify why is 
 jQuery taking so much time.



[jQuery] Re: jQuery select all vs conventional javascript

2008-11-20 Thread JQueryProgrammer

Ok got it and understood that the conventional javascript would be
faster than jQuery in this case. But what I have seen is that just by
pressing SHIFT+END, all the options in the listbox get selected. Is
there some way we can fire that event to select all options.

On Nov 20, 1:10 pm, Michael Geary [EMAIL PROTECTED] wrote:
 It's no surprise that the jQuery code is slower: you can always outperform
 jQuery with a custom-tuned loop. After all, jQuery has to do everything that
 your custom loop does, plus much more. For one thing, jQuery has to first
 build an array of all the items and then traverse that array. Your custom
 code doesn't have to build an array at all.

 You may be able to pick up a tiny bit more speed in your loop. First, make
 sure to var your i variable. If you don't var it, i is actually a
 property of the window object, and if this code is inside a function, that
 will make it slower to access the variable.

 Also, don't look up myListBox.length every time through the loop; you can
 either look it up once at the beginning or not at all.

 I would try these three variations on your loop and see if any of them comes
 up faster:

     for( var i = 0, n = myListBox.length;  i  n; )
         myListBox[i++].selected = true;

     for( var i = myListBox.length;  i  0; )
         myListBox[--i].selected = true;

     for( var i = -1, option; option = myListBox[++i]; )
         option.selected = true;

 I'll be curious to know the result.

 My guess is that one of those may be a bit faster, but still too slow to be
 acceptable. If that's the case, there may be nothing to be done for it
 except to do the selecting in batches of, say, 1000 elements with a short
 timeout between each batch. That way the browser will remain responsive
 while you run the loop.

 -Mike

  From: JQueryProgrammer

  I have been using jQuery for quite some time now. For one of
  my projects, I needed to select all the options in the
  listbox which were 10,000+. I tried to do a comparison
  between using jQuery and conventional javascript and here are
  my findings:

  1. With jQuery:
      Code:          $(#myListBox *).attr(selected,selected);
      Time taken: 7+ milliseconds

  2. With JavaScript:
      Code:          for( i=0; i  myListBox.length; i++) { myListBox
  [i].selected = true; }
      Time taken: 21000+ milliseconds

  Can anyone provide with some better code or justify why is
  jQuery taking so much time.