Dispatch Versus Send
Richard Gaskin
ambassador at fourthworld.com
Thu Mar 4 18:49:31 EST 2010
Mark Wieder wrote:
> Richard-
>
> Thursday, March 4, 2010, 2:37:47 PM, you wrote:
>
>> FWIW, where they can be used interchangeably dispatch is about 20% faster.
>
> Have you benchmarked that?
You have to ask? :)
Here's a script I tested with back in September when I had to make some
architectural decisions for an app with complex messaging:
on mouseUp
put 100000 into n
--
-- Dispatch:
put the millisecs into t
repeat n
dispatch "GetNada" to btn "b"
end repeat
put the millisecs - t into t1
--
-- Send:
put the millisecs into t
repeat n
send "GetNada" to btn "b"
end repeat
put the millisecs - t into t2
--
put "Dispatch: Total time: "&t1 &" ("& t1/n&" per iteration)"\
&cr& "Send: : Total time: "&t2 &" ("& t2/n&" per iteration)"
end mouseUp
The GetNada handler is just a time-waster so we have a non-empty handler
to call:
on GetNada
get 1+1
end GetNada
Results:
Dispatch: Total time: 250 (0.0025 per iteration)
Send: : Total time: 364 (0.00364 per iteration)
So it's actually much better than 20% faster (I must be getting old, my
memory's going).
The per-iteration times are useful: with either one we're talking about
such a small fraction of a millisecond that it really won't
matter much when either is used occasionally. When you need timers you
shouldn't feel bad about losing 0.00114 milliseconds. We had to burn
through a hundred thousand iterations just to get to a quarter-second.
But if you don't need the timer delay, adopting dispatch as a habit can
help save a few clock cycles here and there that you can spend on more
useful things. A lot of the stuff I'm working on is migrating to
providing real-time updates to data views, so I take every convenient
chance I can to save time to keep things snappy as we add new stuff.
Hats off to Mark Waddingham for the well-optimized implementation.
--
Richard Gaskin
Fourth World
Rev training and consulting: http://www.fourthworld.com
Webzine for Rev developers: http://www.revjournal.com
revJournal blog: http://revjournal.com/blog.irv
More information about the use-livecode
mailing list