相关疑难解决方法(0)

为什么 coreutils 排序比 Python 慢?

我编写了以下脚本来测试 Python 排序功能的速度:

from sys import stdin, stdout
lines = list(stdin)
lines.sort()
stdout.writelines(lines)
Run Code Online (Sandbox Code Playgroud)

然后,我将其与sort包含 1000 万行的文件上的 coreutils命令进行了比较:

$ time python sort.py <numbers.txt >s1.txt
real    0m16.707s
user    0m16.288s
sys     0m0.420s

$ time sort <numbers.txt >s2.txt 
real    0m45.141s
user    2m28.304s
sys     0m0.380s
Run Code Online (Sandbox Code Playgroud)

内置命令使用了所有四个 CPU(Python 只使用了一个),但运行时间大约是其 3 倍!是什么赋予了?

我使用的是 Ubuntu 12.04.5(32 位)、Python 2.7.3 和sort8.13

performance python coreutils sort benchmark

22
推荐指数
3
解决办法
4267
查看次数

我可以并行排序吗?

例如,bzippbzipbzip. 有没有这样的并行化工具sort来提高性能?

performance sort

14
推荐指数
3
解决办法
9520
查看次数

在已排序的文本文件中进行二分查找

我有一个包含数十亿行可变长度的大排序文件。给定一个新行,我想知道如果它已包含在排序文件中,它将获得哪个字节数。

例子

a\n
c\n
d\n
f\n
g\n
Run Code Online (Sandbox Code Playgroud)

给定输入 'foo' 我会得到输出 9。

这很容易通过简单地遍历整个文件来完成,但是由于数十亿行的可变长度,进行二分搜索会更快。

这样的文本处理工具是否已经存在?

编辑:

现在可以了:https : //gitlab.com/ole.tange/tangetools/blob/master/2search

search text-processing

14
推荐指数
2
解决办法
5126
查看次数