从管道读取时,
sort假定文件很小,并且对于小文件,并行性没有帮助。要
sort利用并行性,您需要使用告诉它分配一个大的主内存缓冲区
-S。在这种情况下,数据文件约为8GB,因此您可以使用
-S8G。但是,至少在具有128GB主内存的系统上,方法2可能仍会更快。
这是因为
sort方法2可以从文件的大小中得知它很大,并且可以在文件中查找(管道都不可行)。此外,由于与这些文件大小相比,您有太多的内存,因此
myBigFile.tmp不需要在
awk退出之前
sort将所需数据写入磁盘,并且能够从缓存而不是磁盘读取文件。因此,方法1和方法2(在像您这样的具有大量内存的机器上)之间的原理区别是
sort方法2知道文件很大,并且可以轻松地划分工作(可能使用seek,但是我没有看过)实现),而方法1
sort必须发现数据量巨大,并且由于无法查找管道,因此在读取输入时不能使用任何并行性。



