Okay, I think I'm brain damaged -- nope, I figured it out
Richard Gaskin
ambassador at fourthworld.com
Sat Sep 14 12:32:13 EDT 2013
Mark Wieder wrote:
> Here's mine again, but I like your benchmarks. I did this with a
> single repeat loop rather than your nested one, but otherwise I think
> we're testing the same thing. I didn't stress-test this the way you
> did with large data clumps, so I think I'd trust your conclusions for
> real-world applications.
>
> on mouseUp
> local temp
> local s
> local accum
>
> put "XXX" into temp
> put the ticks into s
> repeat 1000000 -- yes, that's a million
> append temp, accum
> end repeat
> put the ticks - s into field 1
> answer length(accum)
> end mouseUp
>
> command append pNew, @pString
> put pNew after pString
> end append
No doubt passing the variable by reference is much faster than requiring
a copy, but both will be slower than doing the work inline (which is
often non-copying by nature) because of the overhead of the separate
function call.
To measure that overhead I made this quick test:
on mouseUp
-- Number of iterations:
put 10000 into n
--
-- Test 1: inline:
put the millisecs into t
repeat n
get 1+1
end repeat
put the millisecs - t into t1
--
-- Test 2: function call:
put the millisecs into t
repeat n
get foo()
end repeat
put the millisecs - t into t2
--
-- results:
put t1 && t2
end mouseUp
function foo
return 1+1
end foo
Here's the result:
0.0003 0.0014
On the one hand, the overhead seems quite impressive, with more than
four times the performance when we can do the work inline rather than
call out to a function.
But when we consider the absolute, rather than relative, time, that
overhead is only ~0.0011 ms per call (on the relatively slow machine I
tested on; on a Haswell i5 I'd expect it to be a small fraction of that).
So while it can add up in very lengthy processes like the monster files
Geoff's working on, it's more than fast enough for the convenience
function calls offer for factored, readable code.
--
Richard Gaskin
Fourth World
LiveCode training and consulting: http://www.fourthworld.com
Webzine for LiveCode developers: http://www.LiveCodeJournal.com
Follow me on Twitter: http://twitter.com/FourthWorldSys
More information about the use-livecode
mailing list