Refactoring is your friend / moving from 6.x to 9.x

Mark Waddingham mark at
Fri Jan 4 09:57:27 CET 2019

On 2019-01-04 09:03, Kay C Lan via use-livecode wrote:
> So what I can't confirm is whether PR6671 has been implemented into a
> current version of LC9, but what I will say is this, if it hasn't then
> Malte can look forward to an eventual speed improvement in large Array
> operations as Mark Wa has already identified this problem and is
> working on a fix.  If it has been implemented then Malte needs to take
> a look at Mark Wa examples and see where he can use some of Mark Wa's
> good code to replace his own poorly performing code.

It hasn't as yet - that PR 
( has actually turned 
into a mini-grab bag of things which need to be separated out slightly:

   - reduction of memory usage of the 'handle' structures used to hold 
values (particularly on 64-bit)
   - faster processing of integer index access in arrays
   - faster short-path array access (both storing and fetching)
   - 'static' switch optimization (switches with all literal cases are 
now constant time and not linear in the number of cases)
   - params(<n>[, <m>) which returns an numeric array of parameters <n> 
up to <m>
   - sequence and array literals
   - a try(expr, error-expr) function (evaluates error-expr as the result 
if expr throws)
   - array meta-indexing (tArray[first], tArray[last], tArray[next])

The only one which is unlikely to survive is the meta-indexing as (1) 
they don't quite work correctly and (2) Monte had a better suggestion 
which I've not had a chance to implement.

It also contains benchmarks derived from my talk at LCG on optimization, 
and Curry's which he posted a while back.

Warmest Regards,


Mark Waddingham ~ mark at ~
LiveCode: Everyone can create apps

More information about the use-livecode mailing list