Slowdown when putting symbols into image data

Earthednet-wp prothero at earthednet.org
Wed Sep 10 10:00:45 EDT 2014


Alex,
Thanks so much for looking into this!
Bill

William Prothero
http://es.earthednet.org

> On Sep 10, 2014, at 6:28 AM, Alex Tweedly <alex at tweedly.net> wrote:
> 
>> On 10/09/2014 00:17, Alex Tweedly wrote:
>> I'll go experiment ....
>> 
>> -- Alex.
> Experimenting with copying a block of bytes in 7.0.0 RC1
> 
> Script is included in its entirety below - but basically it creates a block of 1000 lines, 27K chars/bytes
> It then repeatedly copies over a section of 104 bytes, or 104 chars or 4 lines (i.e. 104 chars)
> 
> As expected, copying by line is slower than by char or byte, and becomes increasingly slower as we choose lines further into the data.
> 
> In 6.7 (DP1), the times to copy chars or bytes are equal and very small, while the number for lines is quite small.
> 
> In 7.0 RC1, the times are all *MUCH* larger  - to the point where I'd say 7.0 is unacceptable.
> And in addition, copying bytes takes over twice as long as copying chars - when if anything it should be the other way round.
> 
> 7.0 RC1
> bytes took  313
> chars took  137
> lines took  4058
> 
> 6.7 (DP4)
> bytes took  8
> chars took  8
> lines took  411
> 
> i.e. 7.0 is 40 times slower for copying a block of data !!
> 
> I'll try to enter a bug report and when (if) I succeed, I'll post the number here.
> 
> 
> -- Alex.
> 
> constant K = 10  -- which gives 2**10 lines of data
> constant KSTART = 4 -- starting offset - large numbers should make lines slow, but not affect bytes
> constant COUNT = 20000 -- make this big enough to get useful data
> 
> on mouseUp
>   -- setup
>   local tt, tStartData, cPos1, cPos2, t1, t2
>   put "abcdefghijklmnopqrstuvwxyz" & CR into tt
>   repeat K times
>      put tt after tt
>   end repeat
> 
>   put tt into tStartData
>   put "data has" && the number of lines in tStartData && the number of bytes in tStartData &CR after fld 1
> 
>   put the number of chars in line 1 to KSTART of tStartData into cPos1
>   put the number of chars in line 1 to kSTART + 4 of tStartData into cPos2
> 
>   put the millisecs into t1
>   repeat COUNT times
>      put byte 1 to cPos2 - cPos1 +1 of tt into byte cPos1 to cPos2 of tStartData
>   end repeat
>   put the millisecs into t2
>   put "bytes took " && t2 - t1 &CR after msg
> 
>   put the millisecs into t1
>   repeat COUNT times
>      put char 1 to cPos2 - cPos1 +1 of tt into char cPos1 to cPos2 of tStartData
>   end repeat
>   put the millisecs into t2
>   put "chars took " && t2 - t1 &CR after msg
> 
>   put the millisecs into t1
>   repeat COUNT times
>      put line KSTART to KSTART+4 of tt into line KSTART to KSTART+4 of tStartData
>   end repeat
>   put the millisecs into t2
>   put "lines took " && t2 - t1 &CR after msg
> 
> end mouseUp
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode




More information about the use-livecode mailing list