我试着从一个大约有300万条记录的Excel文件中找到唯一的记录。(排序和筛选>高级>仅唯一)。它花了4个多小时,而且还在运行。我试着与它交互,但它崩溃了。所以我在Linux中对-u进行了排序,甚至不到一分钟的时间。为什么它比Excel的排序快这么多?PS,安装了MSExcel的机器有12 GB的内存,Windows10。可怜的Linux只有1到2 GB。
发布于 2017-05-18 14:46:55
据我所知,Linux排序版本是一个经典的UNIX排序,它是GNU coreutils-6.9.90的一部分。
这是标准的外部R-Way merge的经典示例,为了对大小为N字节的数据进行排序,主内存大小为M,因此它一次创建N/M次运行并合并R次,通过数据的次数是/log(N/M)次。
关于Excel我不确定,但我猜他们使用的是其他人使用的相同的字符集,如果区分大小写,将字符转换为字符集编号并按字符集编号的数字顺序排序,如果不区分大小写,则向大写数字添加一个类似32的常量,使其等于小写数字。
如果要创建特殊排序顺序,
choose Tools>> Options >> Custom Lists 并创建自己的排序顺序。然后,当您准备好对数据进行排序时,请选择“排序”对话框中的“选项”按钮,并选择一个自定义列表作为备用排序关键字顺序。
根据我在linux排序阶段的理解,它会将整个数据分成足够放入主内存的小块,然后读取、排序并写出到一个临时文件中,最后将所有排序的子文件合并到一个更大的文件中。这可能是linux排序快于excel排序的原因。
https://stackoverflow.com/questions/44039656
复制相似问题