Time test: on testRepeat put "xxx" into line 100000 of tList replace cr with "xxx" & cr in tList put the long seconds into timerStart repeat with n = 1 to 100000 put line n of tList & cr after newList1 end repeat put the long seconds into timerEnd put timerEnd - timerStart into nEqualsTime put the long seconds into timerStart repeat for each line n in tList put n & cr after newList2 end repeat put the long seconds into timerEnd put timerEnd - timerStart into forEachTime put "n = 1 to 100000:" && nEqualsTime && "secs" & cr & "for each:" && forEachTime && "secs" end testRepeat
produces: n = 1 to 100000: 41.704915 secs for each: 0.037602 secs While replacing "put … after newList" with "put pi into y" in both repeat loops gives n = 1 to 100000: 0.027132 secs for each: 0.025698 secs so it seems that the time-consuming thing is for the engine to retrieve "line n of tList" when n is large. On Feb 17, 2014, at 4:50 PM, Peter Haworth wrote: > Have to admit I'm the same. If it's more convenient codingwise to to > repeat with x=1 to whatever and I know for sure there won;t be many > iterations to go through, the speed difference is unnoticeable to the user. > > I'm also curious about another aspect of this. Is it universally true that > "repeat with" is always slower than "repeat for" or only when the loop is > addressing LC chunks of one sort or another? > > > Pete > lcSQL Software <http://www.lcsql.com> > Home of lcStackBrowser <http://www.lcsql.com/lcstackbrowser.html> and > SQLiteAdmin <http://www.lcsql.com/sqliteadmin.html> > > > On Mon, Feb 17, 2014 at 12:39 PM, Peter M. Brigham <pmb...@gmail.com> wrote: > >> On Feb 16, 2014, at 10:23 PM, Geoff Canyon wrote: >> >>> On Sun, Feb 16, 2014 at 2:52 PM, Bob Sneidar < >> bobsnei...@iotecdigital.com>wrote: >>> >>>> Funny, just before I read your post I was thinking, "I wonder if this >>>> scales linearly or logarithmically?" GET OUT OF MY HEAD!!! ;-) >>> >>> It's pretty much my personal quest to convince everyone never to use >> repeat >>> with i = 1 to the number of anything. >> >> Well, I still do it for i < 1000 or so, and the speed hit is perfectly >> acceptable for that. The advantage for me is when I must use the number of >> the iteration I'm in to do something. Sure I could do: >> >> put 0 into tCounter >> repeat for each line LL in tList >> add 1 to tCounter >> ...< do things using tCounter here>... >> end repeat >> >> but why bother for smaller sets of data? >> >> While we're dreaming of syntax extensions, how about this: >> >> repeat for each line LL in tList with counter = "tCounter" >> -- the variable tCounter would automatically be initialized then >> incremented with each iteration >> ...< do things using tCounter here>... >> end repeat >> >> -- Peter >> >> Peter M. Brigham >> pmb...@gmail.com >> http://home.comcast.net/~pmbrig >> >> >> _______________________________________________ >> use-livecode mailing list >> use-livecode@lists.runrev.com >> Please visit this url to subscribe, unsubscribe and manage your >> subscription preferences: >> http://lists.runrev.com/mailman/listinfo/use-livecode >> > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode