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