Re: [Prototype-core] Re: For() loops, ++i, i++, i+=1
2009/12/17 T.J. Crowder : > Forget the CPU cycles, it's the brain cycles I want back. > > But it was all worth it to learn about JSLitmus. :-) > > On Dec 17, 3:33 pm, Bob Kerns wrote: >> Not to be a curmudgeon about it -- I'll just point out that the CPU cycles >> consumed in processing the email for this discussion far exceeds the CPU >> cycles saved by all the code the lot of you will ever write with such >> tweaks. >> >> Purely entertainment / mental game play. >> >> If you want to improve performance, the mental effort would be better spent >> looking at your algorithm, or even better, measuring the performance to find >> where you need to focus your attention. I can tell you now it won't be your >> choice of iteration statements! >> >> Play on -- I just wanted to put it into context... > > -- > You received this message because you are subscribed to the Google Groups > "Prototype: Core" group. > To post to this group, send email to prototype-core@googlegroups.com > To unsubscribe from this group, send email to > prototype-core-unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/prototype-core?hl=en Well I'm glad you all had a little look. These sorts of things don't often mean much. OOI. ++i, ++i vs i += 2 also seems to be a little better. -- - Richard Quadling "Standing on the shoulders of some very clever giants!" EE : http://www.experts-exchange.com/M_248814.html Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 ZOPA : http://uk.zopa.com/member/RQuadling -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en
[Prototype-core] Re: For() loops, ++i, i++, i+=1
Forget the CPU cycles, it's the brain cycles I want back. But it was all worth it to learn about JSLitmus. :-) On Dec 17, 3:33 pm, Bob Kerns wrote: > Not to be a curmudgeon about it -- I'll just point out that the CPU cycles > consumed in processing the email for this discussion far exceeds the CPU > cycles saved by all the code the lot of you will ever write with such > tweaks. > > Purely entertainment / mental game play. > > If you want to improve performance, the mental effort would be better spent > looking at your algorithm, or even better, measuring the performance to find > where you need to focus your attention. I can tell you now it won't be your > choice of iteration statements! > > Play on -- I just wanted to put it into context... -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en
Re: [Prototype-core] Re: For() loops, ++i, i++, i+=1
+1,000,000,000 (cycles) -1 on downplaying really nerdy optimizations :) you curmudgeon you (nice word, btw) --- Warm Regards, Ryan Gahl On Thu, Dec 17, 2009 at 9:33 AM, Bob Kerns wrote: > Not to be a curmudgeon about it -- I'll just point out that the CPU cycles > consumed in processing the email for this discussion far exceeds the CPU > cycles saved by all the code the lot of you will ever write with such > tweaks. > > Purely entertainment / mental game play. > > If you want to improve performance, the mental effort would be better spent > looking at your algorithm, or even better, measuring the performance to find > where you need to focus your attention. I can tell you now it won't be your > choice of iteration statements! > > Play on -- I just wanted to put it into context... > > -- > You received this message because you are subscribed to the Google Groups > "Prototype: Core" group. > To post to this group, send email to prototype-core@googlegroups.com > To unsubscribe from this group, send email to > prototype-core-unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/prototype-core?hl=en > -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en
Re: [Prototype-core] Re: For() loops, ++i, i++, i+=1
Not to be a curmudgeon about it -- I'll just point out that the CPU cycles consumed in processing the email for this discussion far exceeds the CPU cycles saved by all the code the lot of you will ever write with such tweaks. Purely entertainment / mental game play. If you want to improve performance, the mental effort would be better spent looking at your algorithm, or even better, measuring the performance to find where you need to focus your attention. I can tell you now it won't be your choice of iteration statements! Play on -- I just wanted to put it into context... -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en
[Prototype-core] Re: For() loops, ++i, i++, i+=1
Here is a small quoted text from Andrea Giammarchi on "tweetter": [quote] i++ returns a new Number with "i" value then increments the "i" reference, while ++i execute just the second step - that is why I prefer ++i [/quote] this should be the same with both pre-increment and pre-decrement and in my tests while loops are generally faster than for loops. Diego On Dec 17, 11:58 am, Robert Kieffer wrote: > T.J. > > Be sure you've unchecked the "normalize results" checkbox. That will get > rid of the "infinite ops/sec". > > FWIW, that checkbox is provided as a way of subtracting out the time > required to do an empty loop when computing test performance. In 99% of > cases, where you're interested in testing the performance of what's inside > the iteration loop and not the loop code itself, you want that box checked. > > In this particular case, though, we're testing empty loop performance, so it > needs to be unchecked. (And, of course, subtracting out that time usually > yields a zero result - hence the infinite ops/second. So, yeah, as long as > you can break RSA keys using empty code blocks, knock yourself out!) > > - rwk ;-) > > On Thu, Dec 17, 2009 at 12:53 AM, T.J. Crowder > wrote: > > > > > I'd post Chrome and Firefox results for Windows, but I kept getting > > infinite numbers of operations per second! ;-) Chrome (of course!) did > > an infinite number of ops/second on all of the tests. Firefox > > alternated between infinite numbers of ++i and i++ operations -- so > > probably a wash there too. > > > Now, since I apparently have the power to do infinite numbers of > > calculations, I'm off to break some RSA keys... > > > -- T.J. ;-) -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en
[Prototype-core] Re: For() loops, ++i, i++, i+=1
What IS a bit faster is looping like var top = 1000; var n; for (n=top; n; --n) {} Post- or prefix doesn't seem to matter much. Of course, what you do in the loop might overshadow the indexing technique's possible benefits amyway. On Dec 16, 11:21 am, RQuadling wrote: > Hi. > > Is there any consensus on which is more efficient in a for() loop? > > I was taught that for ++i being the most efficient. > -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en
Re: [Prototype-core] Re: For() loops, ++i, i++, i+=1
T.J. Be sure you've unchecked the "normalize results" checkbox. That will get rid of the "infinite ops/sec". FWIW, that checkbox is provided as a way of subtracting out the time required to do an empty loop when computing test performance. In 99% of cases, where you're interested in testing the performance of what's inside the iteration loop and not the loop code itself, you want that box checked. In this particular case, though, we're testing empty loop performance, so it needs to be unchecked. (And, of course, subtracting out that time usually yields a zero result - hence the infinite ops/second. So, yeah, as long as you can break RSA keys using empty code blocks, knock yourself out!) - rwk ;-) On Thu, Dec 17, 2009 at 12:53 AM, T.J. Crowder wrote: > > I'd post Chrome and Firefox results for Windows, but I kept getting > infinite numbers of operations per second! ;-) Chrome (of course!) did > an infinite number of ops/second on all of the tests. Firefox > alternated between infinite numbers of ++i and i++ operations -- so > probably a wash there too. > > Now, since I apparently have the power to do infinite numbers of > calculations, I'm off to break some RSA keys... > > -- T.J. ;-) > > -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en
[Prototype-core] Re: For() loops, ++i, i++, i+=1
Thanks for that info and link, Robert! Obviously, we who develop web apps for normal users should leave the setting alone most of the time, but good to know we can change it for these sorts of tests. (And wow, I thought it was a time limit; that explains why something I was doing the other day was giving me this error way faster than I expected.) Results for IE7 on Windows XP: http://tinyurl.com/y8fb77y http://tinyurl.com/yd3vuzz http://tinyurl.com/ydqgvwr http://tinyurl.com/ye8hwvb (I find it's best to run these tests multiple times.) Basically, it's a wash (++i or i++), but i += 1 is markedly slower. As you say, Robert, unlikely to make any difference in the real world. I'd post Chrome and Firefox results for Windows, but I kept getting infinite numbers of operations per second! ;-) Chrome (of course!) did an infinite number of ops/second on all of the tests. Firefox alternated between infinite numbers of ++i and i++ operations -- so probably a wash there too. Now, since I apparently have the power to do infinite numbers of calculations, I'm off to break some RSA keys... -- T.J. ;-) On Dec 16, 2:48 pm, Robert Kieffer wrote: > Unfortunately IE limits scripts to "5M statements", rather than limiting by > time. That limit was set back in the days of IE4, when 5M statements would > take ~10 seconds to run. But newer hardware/script engines hit that in a > fraction of a second now... which is why you're seeing it. > > The workaround is to edit your registry to increase the limit to 50M > statements (or more). This MS article explains how, and provides a bit more > background on of this ( ridiculous) behavior. > > http://support.microsoft.com/default.aspx?scid=kb;en-us;175500 > > > > On Wed, Dec 16, 2009 at 4:44 AM, Allen Madsen wrote: > > I tried running your test on IE8 and it just kept prompting me with script > > unresponsive. > > > Allen Madsen > >http://www.allenmadsen.com > > > On Wed, Dec 16, 2009 at 7:01 AM, Robert Kieffer wrote: > > >> I whipped up a quick JSLitmus test to try out a handful of empty loops > >> (using i++, ++i, i+=1, and a while loop: > >>http://www.broofa.com/Tools/JSLitmus/tests/loop_operators.html > > >> View the [very short] source of the page to see the actual test code. > >> When running the test for yourself, be sure to uncheck the "normalize" box. > >> Also, you'll probably want to run each test a few times to make sure you're > >> getting consistent results (CPU load elsewhere in the OS can skew resutls). > >> For more on JSLitmus, readhttp://www.broofa.com/Tools/JSLitmus) > > >> Here are the results I got on my MacBook (sorry, don't have IE results > >> handy) > >> FF:http://tinyurl.com/ykdutyk > >> Safari:http://tinyurl.com/yzusg7e > >> Opera:http://tinyurl.com/yjamzwc > >> Chrome:http://tinyurl.com/ylylyw5 > > >> Executive summary: On the above browsers, performance does vary. i++ or > >> ++i are the best all-round performers, while the while() loop is generally > >> not as good. However on all of these systems ('cept Opera), looping code > >> runs so fast that performance is negligable compared to whatever code you > >> put inside the loop. I.e. it's unlikely to matter in all but the most > >> trivial of loops. > > >> - rwk > > >> On Wed, Dec 16, 2009 at 2:28 AM, Yaffle wrote: > > >>> ++i; is a little more efficient in C language, > >>> in javascript difference in performance of all these operators is tiny > > >>> On Dec 16, 3:21 pm, RQuadling wrote: > >>> > Hi. > > >>> > Is there any consensus on which is more efficient in a for() loop? > > >>> > I was taught that for ++i being the most efficient. > > >>> > I've created 2 patches (++ and a +1) in case anyone is interested. > > >>> >http://pastie.org/private/3rgonpsn90yjd17q9zwa > >>> > andhttp://pastie.org/private/qufy3rwmaevxc1sysvq > > >>> > From what I've read, this could be a little pointless, but I'm not the > >>> > expert in this area. > > >>> > Regards, > > >>> > Richard. > > >>> -- > >>> You received this message because you are subscribed to the Google Groups > >>> "Prototype: Core" group. > >>> To post to this group, send email to prototype-core@googlegroups.com > >>> To unsubscribe from this group, send email to > >>> prototype-core-unsubscr...@googlegroups.com > >>> For more options, visit this group at > >>>http://groups.google.com/group/prototype-core?hl=en > > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "Prototype: Core" group. > >> To post to this group, send email to prototype-core@googlegroups.com > >> To unsubscribe from this group, send email to > >> prototype-core-unsubscr...@googlegroups.com > >> For more options, visit this group at > >>http://groups.google.com/group/prototype-core?hl=en > > > -- > > You received this message because you are subscribed to the Google Groups > > "Prototype: Core" group. > > To post to this group, send email to prototype-core@googlegroups.com > > To unsubscribe from this group, send email to > > prototyp
Re: [Prototype-core] Re: For() loops, ++i, i++, i+=1
Unfortunately IE limits scripts to "5M statements", rather than limiting by time. That limit was set back in the days of IE4, when 5M statements would take ~10 seconds to run. But newer hardware/script engines hit that in a fraction of a second now... which is why you're seeing it. The workaround is to edit your registry to increase the limit to 50M statements (or more). This MS article explains how, and provides a bit more background on of this ( ridiculous) behavior. http://support.microsoft.com/default.aspx?scid=kb;en-us;175500 On Wed, Dec 16, 2009 at 4:44 AM, Allen Madsen wrote: > I tried running your test on IE8 and it just kept prompting me with script > unresponsive. > > Allen Madsen > http://www.allenmadsen.com > > > On Wed, Dec 16, 2009 at 7:01 AM, Robert Kieffer wrote: > >> I whipped up a quick JSLitmus test to try out a handful of empty loops >> (using i++, ++i, i+=1, and a while loop: >> http://www.broofa.com/Tools/JSLitmus/tests/loop_operators.html >> >> View the [very short] source of the page to see the actual test code. >> When running the test for yourself, be sure to uncheck the "normalize" box. >> Also, you'll probably want to run each test a few times to make sure you're >> getting consistent results (CPU load elsewhere in the OS can skew resutls). >> For more on JSLitmus, read http://www.broofa.com/Tools/JSLitmus ) >> >> Here are the results I got on my MacBook (sorry, don't have IE results >> handy) >> FF: http://tinyurl.com/ykdutyk >> Safari: http://tinyurl.com/yzusg7e >> Opera: http://tinyurl.com/yjamzwc >> Chrome: http://tinyurl.com/ylylyw5 >> >> Executive summary: On the above browsers, performance does vary. i++ or >> ++i are the best all-round performers, while the while() loop is generally >> not as good. However on all of these systems ('cept Opera), looping code >> runs so fast that performance is negligable compared to whatever code you >> put inside the loop. I.e. it's unlikely to matter in all but the most >> trivial of loops. >> >> - rwk >> >> >> >> On Wed, Dec 16, 2009 at 2:28 AM, Yaffle wrote: >> >>> ++i; is a little more efficient in C language, >>> in javascript difference in performance of all these operators is tiny >>> >>> >>> On Dec 16, 3:21 pm, RQuadling wrote: >>> > Hi. >>> > >>> > Is there any consensus on which is more efficient in a for() loop? >>> > >>> > I was taught that for ++i being the most efficient. >>> > >>> > I've created 2 patches (++ and a +1) in case anyone is interested. >>> > >>> > http://pastie.org/private/3rgonpsn90yjd17q9zwa >>> > andhttp://pastie.org/private/qufy3rwmaevxc1sysvq >>> > >>> > From what I've read, this could be a little pointless, but I'm not the >>> > expert in this area. >>> > >>> > Regards, >>> > >>> > Richard. >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Prototype: Core" group. >>> To post to this group, send email to prototype-core@googlegroups.com >>> To unsubscribe from this group, send email to >>> prototype-core-unsubscr...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/prototype-core?hl=en >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Prototype: Core" group. >> To post to this group, send email to prototype-core@googlegroups.com >> To unsubscribe from this group, send email to >> prototype-core-unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/prototype-core?hl=en >> > > -- > You received this message because you are subscribed to the Google Groups > "Prototype: Core" group. > To post to this group, send email to prototype-core@googlegroups.com > To unsubscribe from this group, send email to > prototype-core-unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/prototype-core?hl=en > -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en
Re: [Prototype-core] Re: For() loops, ++i, i++, i+=1
I tried running your test on IE8 and it just kept prompting me with script unresponsive. Allen Madsen http://www.allenmadsen.com On Wed, Dec 16, 2009 at 7:01 AM, Robert Kieffer wrote: > I whipped up a quick JSLitmus test to try out a handful of empty loops > (using i++, ++i, i+=1, and a while loop: > http://www.broofa.com/Tools/JSLitmus/tests/loop_operators.html > > View the [very short] source of the page to see the actual test code. When > running the test for yourself, be sure to uncheck the "normalize" box. Also, > you'll probably want to run each test a few times to make sure you're > getting consistent results (CPU load elsewhere in the OS can skew resutls). > For more on JSLitmus, read http://www.broofa.com/Tools/JSLitmus ) > > Here are the results I got on my MacBook (sorry, don't have IE results > handy) > FF: http://tinyurl.com/ykdutyk > Safari: http://tinyurl.com/yzusg7e > Opera: http://tinyurl.com/yjamzwc > Chrome: http://tinyurl.com/ylylyw5 > > Executive summary: On the above browsers, performance does vary. i++ or ++i > are the best all-round performers, while the while() loop is generally not > as good. However on all of these systems ('cept Opera), looping code runs > so fast that performance is negligable compared to whatever code you put > inside the loop. I.e. it's unlikely to matter in all but the most trivial > of loops. > > - rwk > > > > On Wed, Dec 16, 2009 at 2:28 AM, Yaffle wrote: > >> ++i; is a little more efficient in C language, >> in javascript difference in performance of all these operators is tiny >> >> >> On Dec 16, 3:21 pm, RQuadling wrote: >> > Hi. >> > >> > Is there any consensus on which is more efficient in a for() loop? >> > >> > I was taught that for ++i being the most efficient. >> > >> > I've created 2 patches (++ and a +1) in case anyone is interested. >> > >> > http://pastie.org/private/3rgonpsn90yjd17q9zwa >> > andhttp://pastie.org/private/qufy3rwmaevxc1sysvq >> > >> > From what I've read, this could be a little pointless, but I'm not the >> > expert in this area. >> > >> > Regards, >> > >> > Richard. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Prototype: Core" group. >> To post to this group, send email to prototype-core@googlegroups.com >> To unsubscribe from this group, send email to >> prototype-core-unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/prototype-core?hl=en >> > > -- > You received this message because you are subscribed to the Google Groups > "Prototype: Core" group. > To post to this group, send email to prototype-core@googlegroups.com > To unsubscribe from this group, send email to > prototype-core-unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/prototype-core?hl=en > -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en
Re: [Prototype-core] Re: For() loops, ++i, i++, i+=1
I whipped up a quick JSLitmus test to try out a handful of empty loops (using i++, ++i, i+=1, and a while loop: http://www.broofa.com/Tools/JSLitmus/tests/loop_operators.html View the [very short] source of the page to see the actual test code. When running the test for yourself, be sure to uncheck the "normalize" box. Also, you'll probably want to run each test a few times to make sure you're getting consistent results (CPU load elsewhere in the OS can skew resutls). For more on JSLitmus, read http://www.broofa.com/Tools/JSLitmus ) Here are the results I got on my MacBook (sorry, don't have IE results handy) FF: http://tinyurl.com/ykdutyk Safari: http://tinyurl.com/yzusg7e Opera: http://tinyurl.com/yjamzwc Chrome: http://tinyurl.com/ylylyw5 Executive summary: On the above browsers, performance does vary. i++ or ++i are the best all-round performers, while the while() loop is generally not as good. However on all of these systems ('cept Opera), looping code runs so fast that performance is negligable compared to whatever code you put inside the loop. I.e. it's unlikely to matter in all but the most trivial of loops. - rwk On Wed, Dec 16, 2009 at 2:28 AM, Yaffle wrote: > ++i; is a little more efficient in C language, > in javascript difference in performance of all these operators is tiny > > > On Dec 16, 3:21 pm, RQuadling wrote: > > Hi. > > > > Is there any consensus on which is more efficient in a for() loop? > > > > I was taught that for ++i being the most efficient. > > > > I've created 2 patches (++ and a +1) in case anyone is interested. > > > > http://pastie.org/private/3rgonpsn90yjd17q9zwa > > andhttp://pastie.org/private/qufy3rwmaevxc1sysvq > > > > From what I've read, this could be a little pointless, but I'm not the > > expert in this area. > > > > Regards, > > > > Richard. > > -- > You received this message because you are subscribed to the Google Groups > "Prototype: Core" group. > To post to this group, send email to prototype-core@googlegroups.com > To unsubscribe from this group, send email to > prototype-core-unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/prototype-core?hl=en > -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en
[Prototype-core] Re: For() loops, ++i, i++, i+=1
++i; is a little more efficient in C language, in javascript difference in performance of all these operators is tiny On Dec 16, 3:21 pm, RQuadling wrote: > Hi. > > Is there any consensus on which is more efficient in a for() loop? > > I was taught that for ++i being the most efficient. > > I've created 2 patches (++ and a +1) in case anyone is interested. > > http://pastie.org/private/3rgonpsn90yjd17q9zwa > andhttp://pastie.org/private/qufy3rwmaevxc1sysvq > > From what I've read, this could be a little pointless, but I'm not the > expert in this area. > > Regards, > > Richard. -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en