function for greatest object in list less than or equal to a value

Alex Tweedly alex at tweedly.net
Tue Oct 13 04:59:07 EDT 2015


On 13/10/2015 02:20, Mike Doub wrote:
> Pass by reference and you can eliminate a memcopy on the initial function call.
>
> -= Mike
>
>
That *used* to be true - but (unless my memory is playing tricks again 
:-), Mark Waddingham said on the list recently that recent (*) versions 
of LC use a pointer, and only "copy-on-write" - so there would be no 
saving in this case.

Kind of verified by a very simple benchmark:

using a value of 500,000 I got times of
LC version  normal    pass by ref
6.6              4023         683
7.0.5           1655       1486
8.0              1768       1465

The code used (with apologies - a bit rushed)

constant K = 100
constant KK = 10
on mouseUp
    ask "how often"
    put it into KKK
    repeat K times
       put "a" after tmp
    end repeat
    repeat KK times
       put tmp after tmp
    end repeat
    put the number of chars in tmp
    put the millisecs into t1
    repeat KKK times
       aa tmp
    end repeat
    put " took " & the millisecs - t1 after msg
    put the millisecs into t1
    repeat KKK times
       bb tmp
    end repeat
    put " took " & the millisecs - t1 after msg
end mouseUp

on aa p
   put  char 1 of p into t
end aa

on bb @p
   put  char 1 of p into t
end bb

-- Alex.

On 13/10/2015 02:20, Mike Doub wrote:
> Pass by reference and you can eliminate a memcopy on the initial function call.
>
> -= Mike
>
>
>
> On Oct 12, 2015, 9:11 PM, at 9:11 PM, Geoff Canyon <gcanyon at gmail.com> wrote:
>> Not quite as concise, but this function is about 3x faster:
>>
>> function greatestLessThan pList,V
>>    put empty into R
>>    repeat for each item i in pList
>>       if i < V and i > R then put i into R
>>    end repeat
>>    return R
>> end greatestLessThan
>> _______________________________________________
>> 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
> _______________________________________________
> 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