【问题标题】:Radix sort implementation for datasets in SASSAS中数据集的基数排序实现
【发布时间】:2011-12-22 18:46:45
【问题描述】:

在我的日常工作中,我经常使用包含数百万行、有时是数亿行、有时甚至超过 10 亿行的数据集。这些数据集通常需要排序。键几乎总是大整数值(通常是 9 位)。有时数据集具有 9 位和 3 位的复合键。

我想知道是否可以在 SAS 中实现一个(LSD 优先)基数排序宏,它可以用来代替 PROC SORT,以减少对这些数据集进行排序所花费的时间。我已经调整了排序以在适当的地方使用压缩,只保留相关字段(或使用标签排序),适当地调整字段长度,不要不必要地排序等等......

我使用的硬件有局限性——假设我只有 2G 的内存可供 SAS 使用,因此该解决方案不需要将所有键值放在内存中的临时数组中(至少不是全部放在一起)时间)。

该解决方案会比 proc 排序提供性能改进吗?有没有人已经实施过这样的事情或有经验?我是在浪费时间吗?

【问题讨论】:

    标签: sas radix-sort


    【解决方案1】:

    我在这里找到了一些实现基数排序的示例(使用临时数组):

    http://listserv.uga.edu/cgi-bin/wa?A2=ind9901b&L=sas-l&P=11902

    使用这个示例和一些非常松散的假设,看起来 SAS(版本 9+)中的新线程排序将优于单线程基数排序时钟时间 .在 CPU 时间中,基数排序仍然表现更好,但这并不重要。所以我将停止进一步追求这一点。

    【讨论】:

    • 您的链接对我无效。我认为通过 SAS/Connect 实现您自己的并行排序不是一个值得的选择?
    • 我们这里没有获得 SAS/Connect 许可,所以这不是我的选择。我也没有使用过 Connect,所以我觉得没有资格发表评论。
    • 如果你真的想研究这个,你可能会发现this link很有趣。
    猜你喜欢
    • 2016-01-24
    • 1970-01-01
    • 2016-11-17
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多