SAS proc sort 算法

3

我在谷歌上搜索了一下,但没有找到proc sort在SAS中使用的算法是什么?例如,在Python中,sort()会使用timsort


2
很遗憾,该算法是闭源和专有的。您可以尝试向SAS技术支持提问,看看他们是否能够至少提供有关其正在执行的某些信息!他们通常很乐意为好奇的人深入探究某些细节。多年来,我通过需要解决问题并向技术支持发送电子邮件的方式学到了一些关于随机过程内部工作原理的有趣事情。 - Stu Sztukowski
只是给自己的一个提示:官方 SAS proc sort 文档 中并没有明确提及任何算法。 - B--rian
1个回答

2
正如Stu所观察到的那样,proc sort是闭源的,因此我们能做的最好的事情就是推测。话虽如此,我怀疑在不同的情况下选择排序算法的因素至少包括以下几个方面:
  • SAS运行的平台
  • 管理源数据集和目标数据集的libname引擎。
  • proc sort语句中使用的设置 - 特别是noequals(请求稍快但不稳定的排序)、tagsortthreads
  • 通过sortsizememsize系统选项定义的排序可用内存大小。
  • 输入数据集的大小
  • 是否调用任何第三方排序引擎(例如SyncSort)而不是 SAS 默认的排序引擎,通过 sortpgmsortcutp和其他相关的系统选项。
值得注意的是,SAS已经存在多个计算机硬件世代,选择最优排序算法很大程度上依赖于硬件。甚至冒泡排序在足够老的系统上理论上也可以是最优的。我非常希望SAS能考虑到这种情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接