2

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

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

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

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

4

1 回答 1

1

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

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

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

于 2011-12-27T21:13:30.477 回答