Fast/slow code example (was: Re: compileIt for revolution?)

Dar Scott dsc at swcp.com
Fri Jun 24 15:09:53 EDT 2005


On Jun 24, 2005, at 12:42 PM, Jim Bufalini wrote:

> However, the "repeat with i =" form being slower than the "repeat for 
> each"
> was news to me!

Upon reflection, you might have wondered about that.

The key is that the first uses 'line i of x' in the loop.  The length 
of time to get this value increases with i.

Normally, values are simply sequences of characters and values with 
multiple lines are simply values that contain some line-delimiter 
characters (coded the same as ASCII LF).  Though it is possible that 
some internal optimization breaks these up into structured data or a 
line-index table is cached, it is reasonable to suspect that this is 
not the case.  If there is no optimization to finding line n, then all 
characters form the start of the string to line n must be searched.

It is possible that some compiler optimization would look for line n in 
loops and convert, but our first assumption should be that it probably 
doesn't.

We might assume that 'for each' does not have this limitation.  We 
might assume that 'for each' keeps one or more hidden character indexes 
in managing the loop.

Given such suspicions we might try some timing or ask on the list.

This does not currently apply to characters; 'char n of s' executes in 
constant time.

Even so...

We all are sometimes surprised by things that should jump out.  I am.

It should be mentioned in the docs.  (And probably is and I don't know 
where.)

Dar

-- 
**********************************************
     DSC (Dar Scott Consulting & Dar's Lab)
     http://www.swcp.com/dsc/
     Programming and software
**********************************************



More information about the use-livecode mailing list