Wait 0 doesn't
jhurley at infostations.com
Mon Apr 28 09:05:01 CDT 2003
This will be of little concern to most, but for me it made a big difference.
I have an application which allows students to program graphical
solutions to science problems--using Turtle Graphics.
For some simple problems I need to slow the drawing or it happens so
quickly that it is impossible for the student to see what is
happening. And so I introduce into the TG drawing script a "wait
WaitTime" where WaitTime is a parameter chosen by the student to suit
Now for plotting the solution to Newton's equations of motion for an
orbiting planet, the waitTime is set equal to zero since the number
of steps needed to simulate the orbit accurately is relatively large.
But I found using a wait time of 0 also to be somewhat herky-jerky,
the planet stutters in its path around the moon.
However, I found if I comment-out the wait line altogether, the
planetary motion is much faster (140 ticks without the "wait 0"
rather than 200 ticks with "wait 0") and, more importantly, much
To demonstrate this in a simple example, consider the following
handlers which do nothing but run through a loop 800 times:
wait 0 millisecond
The above takes from 500 to 1000 milliseconds to run. It varies
widely. (If there are no instructions within the loop, it takes
between 0 and 1 milliseconds to run the 800 repeats. Maybe the
compiler is smart enough to realize straight off that it is wasting
myWait 0 millisecond
on myWait temp
if temp = 0 then exit myWait
wait temp milliseconds
This version takes between 10 and 11 milliseconds (on my machine). It
is much faster and much more consistent; all loops take about the
This anomaly with "wait 0" is most likely an artifact of the engine,
since it applies to MC as well as RunRev.
Moral: It takes longer to "wait 0 milliseconds" than it does to
temporize with: "if temp = 0 then exit myWait"
Of course it is easy to see why the compiler is not prepared for the
fool who would program a wait of 0 milliseconds.
More information about the use-livecode