in reply to Re: A heap of medians: efficiency vs. speed
in thread A heap of medians: efficiency vs. speed
I'll start by pointing out that the two sorts you show are not identical.
use List::Util qw( shuffle ); my @n = shuffle 5 .. 15; print join( q{, }, sort @n ), "\n"; print join( q{, }, sort { $a <=> $b } @n ), "\n"; __END__ 10, 11, 12, 13, 14, 15, 5, 6, 7, 8, 9 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
That's because sort, by default, uses "cmp" rather than "<=>" for comparisons. That's sort of beside your point, however. A sort with the comparison unspecified will be faster than one that's explicit, and there's a convenient special case for "reverse sort". That's all good.
It's sort of beside the point of my meditation, however. The point here was to compare efficiency and speed. With the tied scalars, I was able to show that the heap method was more efficient—it did fewer comparisons. In spite of that, it was still slower because sort does its comparisons so much faster due to being optimized C.
In any case, thanks for your comment.
|
|---|