Mark Smith wrote the magic phrase that made this much clearer to me:

> It's like attaching a temporary value to each line and sorting
> by that.

The moment of "a ha!" Thank you, Mark. Jim Ault's detailed explanation was also helpful.

So this tells me two things:

1. Using a function for a sortKey expression introduces a "sometimes" rule in terms of understanding the order of expression evaluation in the engine, in which most of the time functions are evaluated first but in this case the function is applied repeatedly for each line of the sort container as the sort command is run.

2. Using a function as a sortKey expression evaluates the sort container as though by effectively adding data to it, rather than anything necessarily in the data itself.

Both of these are very valuable insights. Thanks to all who helped explain this.

Yes indeed, now I can see many areas where this can be useful, but it also leaves me with a question:

Given #1 above, how does this affect performance? Unless there's something ultra-tricky going on (wouldn't be the first time the engine surprised me that way <g>), I would imagine that performance is affected at least linearly, in which the overhead of the function call is multiplied by the number of lines of the container to arrive at the additional performance hit relative to a non-custom sort.

Perhaps I'll do some benchmarking to verify this theory....

--
 Richard Gaskin
 Managing Editor, revJournal
 _______________________________________________________
 Rev tips, tutorials and more: http://www.revJournal.com
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to