Two features I don't understand

Richard Gaskin ambassador at fourthworld.com
Fri Oct 31 00:04:32 EDT 2014


Alex Tweedly wrote:
> On 30/10/2014 18:36, Richard Gaskin wrote:
>> 1. ID caching
>> Page 10 of the v6.0 Release Notes:
>> <http://downloads.livecode.com/livecode/6_0_0/LiveCodeNotes-6_0_0.pdf>
>>
>> The description there says:
>>
>>    The engine now caches lookups of control references of the form
>>    “card id ...” and “control id ...”.  This speeds up any access
>>    using those forms after the first time, turning an operation that
>>    would be completed in linear time into one that will be completed
>>    in constant time.
>>
>> What does that mean in practical terms?  How can I benchmark the
>> benefit of this new feature?
>>
> Hmmmm - I said this once before :-) :-)

My apologies for the inconvenience.  I'd either missed it before or 
completely forgot about it, but the latter seems unlikely given how 
remarkable the post was:

>> Yes, here's an example. The clue (I think) is in the "linear
>> time...into constant time"
>>
>> Create a large-ish number of controls - in this stack I cloned a
>> button 1000 times, calling them
>> BBB1   BBB2 .... BBB1000
>>
>> Then this code accesses a single control many times - and shows that
>> accessing by id is much faster than accessing by name, but more
>> importantly here, that in 6.0 access by id to the most recently
>> accessed control is very fast.
>>
>> in 5.5.3
>> name takes 830 ms while id takes only 250 ms
>>
>> but in 6.0 (i.e. with id caching)
>> name takes 830 ms while id takes 5 ms
>>
>> -- Alex.
>>
>>
>>
>> global K
>>
>> on mouseUp
>>    put 1000 into K
>>
>>    put the millisecs into t1
>>    put "BBB"&(K-10) into tName
>>    repeat 10000 times
>>       put the short name of control tName  into t
>>    end repeat
>>    put the millisecs-t1 && t &CR after msg
>>
>>    put the millisecs into t1
>>    put the id of button tName into tID
>>    repeat 10000 times
>>       put the short name of control id tID  into t
>>    end repeat
>>    put the millisecs-t1 && t &CR after msg
>>
>> end mouseUp

What I find most remarkable is the way your benchmark makes the value of 
this ID caching seem rather trivial.

I trust this was a one-liner, as I can't imagine them spending much time 
optimizing something so very specialized and which takes so little 
execution time per iteration.

I wonder what prompted this one...perhaps something specific to the 
coding style of the person who wrote the Project Browser?

-- 
  Richard Gaskin
  Fourth World Systems
  Software Design and Development for Desktop, Mobile, and Web
  ____________________________________________________________
  Ambassador at FourthWorld.com        http://www.FourthWorld.com




More information about the use-livecode mailing list