valueDiff for arrays?

Brian Milby brian at milby7.com
Sun Aug 5 16:09:54 EDT 2018


Intersect is an engine implementation of something that can be done in pure LCS. I wrote a version of the function you needed that only used LCS without the engine optimized functions. My function only iterates over an array once (instead of 3 times) yet takes twice as long. It deletes keys from left as it iterates and also builds the desired right at the same time.

To Mark’s point, I did try a pure LCS approach with 2 loops which only used delete. That was slightly slower than my initial approach.

I was just attempting to show how much the engine functions outperformed what could be done in pure LCS. Also I wanted to quantify the delta. I guess I should really compare the pure intersect and union functions too.

If anyone is interested I can put a copy of the stack online with all of the variations that I timed.

Thanks,
Brian
On Aug 5, 2018, 2:26 PM -0500, Richard Gaskin via use-livecode <use-livecode at lists.runrev.com>, wrote:
> Brian Milby wrote:
>
> > I think Mark's code had a typo (left returned too many keys), but even
> > when corrected it takes half the time as a pure LCS solution. Here's
> > my modification:
> >
> > function bwmValueDiff pLeft, pRight
> > local tResult
> > intersect pLeft with pRight into tResult["1"]
> > repeat for each key tKey in tResult["1"]
> > if pLeft[tKey] is pRight[tKey] then
> > delete variable tResult["1"][tKey]
> > end if
> > end repeat
> > intersect pRight with tResult["1"] into tResult["2"]
> > return tResult
> > end bwmValueDiff
>
> That looks like LCS. What is the "pure LCS solution" you were comparing
> it to?
>
> --
> Richard Gaskin
> Fourth World Systems
> Software Design and Development for the Desktop, Mobile, and the Web
> ____________________________________________________________________
> Ambassador at FourthWorld.com http://www.FourthWorld.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