【问题标题】:SAS proc sort algorithmSAS proc排序算法
【发布时间】:2015-10-15 08:37:54
【问题描述】:

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

【问题讨论】:

  • 不幸的是,该算法是封闭源代码和专有的。您可以随时尝试向 SAS 技术支持询问这个问题,看看他们是否可以为您提供至少一些关于它在做什么的信息!他们通常很酷地为好奇的人钻研某些细节。多年来,我通过对随机程序进行故障排除和电子邮件技术支持了解了一些关于随机程序内部运作的有趣事情。
  • 请注意:official SAS documentation on proc sort 显然没有提及任何算法。

标签: sorting sas proc


【解决方案1】:

正如 Stu 所观察到的,proc 排序是封闭源代码,所以我们能做的最好的事情就是推测。话虽如此,我怀疑排序算法的选择至少取决于以下因素:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多