old habits are hard to break
Peter M. Brigham
pmbrig at gmail.com
Sat Jun 22 09:57:11 EDT 2013
On Jun 21, 2013, at 11:26 AM, Dr. Hawkins wrote:
> On Fri, Jun 21, 2013 at 2:33 AM, Mark Wilcox <m_p_wilcox at yahoo.co.uk> wrote:
>> A good example from this thread is having four different versions of the same function with
>> tiny variations at the beginning.
>
> For that matter . . . does anyone really know the timing comparisons
> for LiveCode. Say, for parsing a constant "abc", pulling it from a
> variable (ltrs), and an array? (which was all I was optimizing away,
> really, fixed for the price of a four way switch setting the
> variable).
>
> Or if I'm doing or not doing something with an array element based on
> that element, is
>
> if ary[why][el] > 12 then
> put gizmo(ary[why][el]) into widget
> end if
>
> better than
>
> put ary[why][el] into tstVal
> if tstVal > 12 then
> put gizmo(tstVal) into widget
> end if
Well, here's a benchmark for using an intermediate array, comparing these two scripts:
put 7 into tArray[1][2][3]
put 127 into tArray[1][2][4]
put tArray[1][2] into tempArray
if tArray[1][2][3] > 6 then
put tArray[1][2][4] into tWidget
end if
vs.
put 7 into tArray[1][2][3]
put 127 into tArray[1][2][4]
put tArray[1][2] into tempArray
if tempArray[3] > 6 then
put tempArray[4] into tWidget
end if
Running the comparison on my old MacBook Core 2 Duo within a high-n repeat loop I get
script 1: 2.177881 seconds
script 2: 1.962642 seconds
so the intermediate shallow array saves some time, presumably increasingly more with deeper arrays.
OTOH, long variable names do nothing to shave clock cycles at runtime, I think that whatever the variable names it gets compiled to the same code.
There is an old stack by Richard Gaskin, 4W_RevBench, that I have usually used for benchmarking but I just pulled it out and it is now acting very weird for me since I moved to LC 5.5, so I rolled my own handler for this test.
-- Peter
Peter M. Brigham
pmbrig at gmail.com
http://home.comcast.net/~pmbrig
More information about the use-livecode
mailing list