SAS中数据集的基数排序实现

时间:2011-12-22 18:46:45

标签: sas radix-sort

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

我想知道是否可以在SAS中实现一个(LSD-first)基数排序宏,可以用来代替PROC SORT来减少排序这些数据集的时间。我已经调整过各种类型,在适当的时候使用压缩,只保留相关字段(或使用tagsort),大小字段长度适当,不要不必要地排序等等......

我使用的硬件有局限性 - 让我们假设我只有2G内存可供SAS使用,因此解决方案不能要求将所有键值放在内存中的临时数组中(至少不是所有键都在内存中)时间)。

该解决方案是否会提供超过proc排序的性能提升?有没有人已经实现过这样的东西或者有过这方面的经验?我在浪费时间吗?

1 个答案:

答案 0 :(得分:1)

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

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

使用这个例子和一些非常宽松的假设,似乎SAS(版本9+)中的新线程排序将超过单个线程基数排序 在时钟时间 。在CPU时间内,基数排序仍然表现更好,但实际上并不是很重要。所以我将不再继续这样做了。