SAS proc排序算法

时间:2015-10-15 08:37:54

标签: sorting sas proc

我用谷歌搜索,但我没有找到有关SAS中proc sort幕后算法的信息?例如,在Python中,sort()使用timsort

1 个答案:

答案 0 :(得分:2)

正如Stu所观察到的那样,proc sort是封闭源,所以我们能做的最好就是推测。话虽如此,我怀疑排序算法的选择至少取决于以下因素,而不是在所有情况下只使用一种算法:

  • 运行SAS的平台
  • 管理源数据集和目标数据集的libname引擎。
  • proc sort语句中使用的设置 - 尤其是noequals(请求稍快但不稳定的排序),tagsortthreads
  • 通过sortsizememsize系统选项定义的排序可用内存量。
  • 输入数据集的大小
  • 是否通过sortpgmsortcutp和其他相关系统选项调用任何第三方排序引擎(例如SyncSort),而不是SAS默认排序引擎。

值得注意的是,SAS已经经历了多代计算机硬件,并且排序算法的最佳选择在很大程度上取决于硬件。即使是冒泡排序理论上也可以在足够老的系统上实现最佳。我非常希望SAS能够解决这类问题。