Reverse a list
Peter Haworth
pete at lcsql.com
Mon Feb 16 18:25:22 EST 2015
That's very interesting. I've never used private since I had the
impression that the only thing it did was stop the handler from being
called outside of the script it appears in.
But it seems there is a performance benefit too. Why would that be, I
wonder. I understand that the engine only needs to look in the current
script for a private handler, but isn't that where the search for a handler
starts anyway?
On Mon Feb 16 2015 at 3:11:22 PM BNig <bernd.niggemann at uni-wh.de> wrote:
> Hi Jacque,
>
>
> J. Landman Gay wrote
> > This is getting to be just too much fun. I think Geoff was right, we
> > don't need to initialize sNum because we don't care if we go into
> > negative territory. And since the handler isn't actually using the value
> > of the line, we can omit passing it by removing "each". So it could be
> > even shorter/faster this way:
> >
> > local sNum
> > function reverseText @pList
> > sort lines of pList numeric by reverseSort()
> > return pList
> > end reverseText
> >
> > private function reverseSort
> > subtract 1 from sNum
> > return sNum
> > end reverseSort
> >
> > I'm not sure the private declaration is necessary, but it won't hurt. My
> > thinking is that the engine only looks for a private function in the
> > current script, but it also looks in the current script first when the
> > function isn't private. If the function is there, it seems that the
> > speed would be the same in either case. The engine would stop looking at
> > the same place.
> >
> > Passing the list with @ is a good addition.
> >
> > Then there is Alex's version which is a different animal.
> >
> >
> > On 2/16/2015 12:58 PM, BNig wrote:
> >> Hi Peter,
> >>
> >> you also might want to check your reverse algorithm on 7.x.x
> >>
> >> in my testing Jacque's initial post with little tweaks is as fast as
> your
> >> code and faster on 7.x.x (tested on 7.0.2 rc2) In my testing it took
> only
> >> 60% of the time compared to yours on 7.x.x
> >> Of course Alex Tweedly's ingenious inverse code leaves everything in the
> >> dust, except on 7.x.x.
> >> ----------------------------------------------------------------------
> >> on mouseUp
> >> put field 1 into tData
> >> put the milliseconds into t
> >> get reverseText (tData)
> >> put the milliseconds - t into field "fRes"
> >> put it into field 1
> >> end mouseUp
> >>
> >> local sNum
> >> function reverseText @pList
> >> put the number of lines in pList into sNum
> >> sort lines of pList numeric by reverseSort(each)
> >> return pList
> >> end reverseText
> >>
> >> private function reverseSort
> >> subtract 1 from sNum
> >> return sNum
> >> end reverseSort
> >> --------------------------------------------------------
> >>
> >> private and @ help when the line count is high.
> >>
>
>
> funny, nobody likes "private"
>
> It save up to 20 % all else equal.
>
> On about 44000 lines 5 items on each line
>
> with private 86 ms, without 106 ms LC 6.7.2
>
> with private roughly 180 ms, without 200 ms on LC 7.0.2 rc2 (times vary
> much
> more on LC 7.0.2 rc2 than on LC 6.7.2
>
> Kind regards
> Bernd
>
>
>
> --
> View this message in context: http://runtime-revolution.
> 278305.n4.nabble.com/Reverse-a-list-tp4688611p4688925.html
> Sent from the Revolution - User mailing list archive at Nabble.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