No, because then people might think it was just because of jQuery that a
looped function call is slow.
The avoidance of repeated unnecessary function calling inside loops is
something that any programmer in any language should look at and immediately
say "Yuck!" :-D

--rob


On 5/24/07, Jean Nascimento <[EMAIL PROTECTED]> wrote:


I´m a javascript nooba, so thanks for the tip :D

On 5/23/07, Gordon <[EMAIL PROTECTED]> wrote:
>
> It is one of those blindingly obvious things but also easy to forget.
> I suppose the tip should be "if you find $ in a loop, find a way to
> cache it".
>
> On May 23, 4:43 pm, "Rob Desbois" <[EMAIL PROTECTED]> wrote:
> > Absolutely, no loop should call a determinate function with the same
> > argument(s) on every iteration.
> > In other words, if a function is called in a loop and it will return
the
> > same value for each iteration take it OUT of the loop.
> >
> > Also Gordon, remember that no more memory is used here - in the slow
version
> > the result from .children() has to be cached somewhere in a temporary
> > variable internally (I would guess, my knowledge of JS internals is
> > minimal). Making the temporary variable explicit will use no
additional
> > memory.
> >
> > --rob
> >
> > On 5/23/07, Gordon <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> >
> >
> > > This one's probably blindingly obvious to anyone with any
significant
> > > programming experience in javascript, but it's an easy one to forget
> > > too.
> >
> > > Consider this code:
> >
> > > function fast ()
> > > {
> > >         var myDivItems = $('#myDiv').children();
> > >         for (x = 0; x < 1000; x++)
> > >         {
> > >                 myDivItems.length;
> > >         }
> > > }
> > > function slow ()
> > > {
> > >         for (x = 0; x < 1000; x++)
> > >         {
> > >                 $('#myDiv').children().length;
> > >         }
> > > }
> >
> > > Both are functionally identical, but try profiling their run times
in
> > > Firebug!
> >
> > > Here's the average run times I got from running each function 5
times
> >
> > > fast: 3.125ms
> > > slow: 3146.875ms
> >
> > > One more line of code, a bit more memory used, but huge win in
loops.
> >
> > --
> > Rob Desbois
> > Eml: [EMAIL PROTECTED]
> > Tel: 01452 760631
> > Mob: 07946 705987
> > "There's a whale there's a whale there's a whale fish" he cried, and
the
> > whale was in full view.
> > ...Then ooh welcome. Ahhh. Ooh mug welcome.
>
>


--

[]´s Jean
www.suissa.info

   Ethereal Agency
www.etherealagency.com




--
Rob Desbois
Eml: [EMAIL PROTECTED]
Tel: 01452 760631
Mob: 07946 705987
"There's a whale there's a whale there's a whale fish" he cried, and the
whale was in full view.
...Then ooh welcome. Ahhh. Ooh mug welcome.

Reply via email to