sort - perl 语言特性用于控制 sort() 函数的行为
sort 语言特性现在是一个空操作,不建议使用。以下三种操作有效,但没有效果
use sort 'stable'; # guarantee stability
use sort 'defaults'; # revert to default behavior
no sort 'stable'; # stability not important
历史上,sort
语言特性可以控制内置 sort()
函数的行为。
在 v5.28.0 之前,还有另外两个选项
use sort '_mergesort';
use sort '_qsort'; # or '_quicksort'
如果您在 v5.28+ 中尝试指定这两个选项中的任何一个,它将抛出错误。
默认排序从 v5.8.0 开始一直是稳定的,并且考虑到近二十年来的一致行为,每个人都开始假设稳定性。
稳定性将保持为默认值 - 因此代码不需要使用语言特性来选择稳定性,以防万一它会发生变化 - 它不会。
我们预计不会回到提供多种通用排序实现 - 因此将来不需要提供语言特性来在它们之间进行选择。
如果您知道您非常关心排序的性能,并且对于您的用例和数据来说,值得调查替代方案,也许可以从我们的默认值中识别出更好的替代方案,并且切换的成本是值得的,那么您比我们知道的更多。我们可能提供的任何选择都不如实现您自己的好。(例如,基数排序可能比 O(n log n) 快,但不能用于所有键并且开销更大。)
我们不反对更改排序算法,但我们没有看到提供两种通用实现选择的益处。
函数sort::current()
用于报告排序语法的当前状态。此函数未导出,并且CPAN上没有调用它的代码。现在已弃用,默认情况下将发出警告。
由于我们不再存储任何排序“状态”,因此它不再能返回正确的值,因此它将始终返回字符串stable
,因为这与我们实际实现的内容一致。