What you are describing is the basic idea behind the Schwartzian Transform
. See my write-up
elsewhere in this thread
for some links
with more information. The idea is that you do the expensive operation (in this case, it's split) once and use a data structure to store the result. You then sort on the results and extract the original information when done. Our very own merlyn
was the first
(AFAIK) to apply his twisted mind to this problem and come up with a very perlish (or lispish depending on your mother tongue) method of doing this in one fell swoop using map.