Deivy Marck Petrescu wrote on Fri, 6 Feb 2009 18:57:33 -0500: >On Feb 6, 2009, at 5:48 AM, Nigel Garvey wrote: > >> Ryan Wilcox wrote on Thu, 5 Feb 2009 21:40:20 -0500: >> >>> On Feb 5, 2009, at 6:03 PM, Deivy Marck Petrescu wrote: >>>> If one does away with the need of manipulating a list but instead >>>> uses a reference to the list then the situation changes =20 >>>> dramatically: >>>> >>>> repeat 10000 times >>>> set end of (a reference to c) to "a" >>>> end repeat >>>> set t3 to (current date) - t2 >>> >>> >>> EXCEPT the "reference to" trick ONLY works in the (implicit or >>> explicit) run hander (because that's the only place you can =20 >>> explicitly >> A now-famous trick is to reference a property of a script object, =20 >> which >> works locally: >> >> on myHandler() >> script o -- o is local to myHandler. >> property c: {} >> end >> >> repeat 10000 times >> set end of o's c to "a" -- o's c instead of c of =ABscript=BB >> end repeat >> >> end myHandler >> >> >> NG > > > >Hello Nigel! Hi, Deivy! :) >By the way, I mentioned the reference because I thought it was simpler. I forgot to mention that your reference suggestion … set end of (a reference to c) to "a" … can be simplified further to: set end of my c to "a" This is quite a bit faster, as the reference to c is compiled directly into the script instead of being set up anew and plugged in each time the line's executed. I suppose another point worth mentioning with regard to top-level properties, globals, and run-handler variables that their values at the end of a run are saved back into the script file. If the values include a list containing 10000 copies of the letter "a", it can cause a fair bit of bloat! Persistent variables with values that aren't actually needed again can be set to something short like "" at the end of a script. I personally prefer to use locals instead as I get annoyed by changes to the scripts' modification dates! (And by the unnecessary backup sizes caused.) NG