On 09/09/2014 20:09, J. Landman Gay wrote:
On 9/9/2014, 12:51 PM, William Prothero wrote:
Seems I’ve found the offending line in my draw script. Its:
> put byte 1 to tLength of tbrushBinaryData into byte tNewStart * 4
- 3 to tNewStart*4 - 3 + tLength -1 of imgdata -- insert
brushimageData into image
If I comment out this line, the symbols are drawn in 2.85 seconds,
more than a factor of 10 speedup.
This would be similar to using a "repeat with x = 1 to 1000"
structure. Every time through the loop the engine has to count from
byte 1 to tNewStart. An image has lots of bytes, so all that counting
makes it slow.
No, it wouldn't be similar to that, or at least two reasons:
1. accessing bytes (or historically chars) is 'direct' - the enginge can
calculate where byte N is and just accesses it directly - in contrast to
needing to traverse thrugh counting which it does need to do for item,
line, word, .... char wa historically the exception, and very quick
because of that. With the move to Unicode, char becomes less 'direct',
but byte will remain direct, and hence should be the quickest one to use.
2. there is a repeat loop over the number of rows in the brushdata - but
there is no repeat loop within this statement (except inside the
engine). It's a single 'put' command, which should copy a large block of
bytes into another (hopefully same sized) block of byte positions.
Notwithstanding that, all the rest of your message, and the advice
given, is correct and good - but I don't see any reason why this
statement should be any slower in 7.0 than in 6.x. I'll go experiment ....
-- Alex.
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode