valueDiff for arrays?

Mark Waddingham mark at livecode.com
Mon Aug 6 23:18:21 EDT 2018


I'd expect that for two reasons.

The first is that all array keys are interred strings (names) so integers need to first be converted to strings and then hashed into a name and then hashed to the slot in the arrays hash table.

The second is that byte based version is essentially using a byte sequence as a bit set - each setting of a byte in the set is about as close as you get to a truly atomic (in the sense of using '1' instruction) as you can get in LC.

It is what you would do in C if you couldn't be bothered using bit operations to manipulate individual bits in machine words (which would be substantially faster again - as you would be touching 1/8th of the memory).

Warmest Regards,

Mark.

Sent from my iPhone

> On 6 Aug 2018, at 20:24, Mark Wieder via use-livecode <use-livecode at lists.runrev.com> wrote:
> 
> Interesting. I tried a variation using arrays, and it's three times slower than yours.
> 
> function get_primes pN
>   local tMroot, tPrimes, tIsItPrime
> 
>   if pN < 2 then return empty
>   if pN = 2 then return 2
>   put trunc(sqrt(pN)) - 1 into tMroot
> 
>   repeat with i=1 to pN step 2
>      put 1 into tIsItPrime[i]
>   end repeat
> 
>   repeat with i = 3 to tMroot step 2
>      if tIsItPrime[i] is empty then next repeat
>      repeat with j = i^2 to pN step i
>         delete variable tIsItPrime[j]
>      end repeat
>   end repeat
> 
>   return the keys of tIsItPrime
> end get_primes
> 
> -- 
> Mark Wieder
> ahsoftware at gmail.com
> 
> _______________________________________________
> 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