为什么coreutils排序比Python慢​​?

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

from sys import stdin, stdout
lines = list(stdin)
lines.sort()
stdout.writelines(lines)

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

$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

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

我使用的是Ubuntu 12.04.5(32位),Python 2.7.3和排序8.13

解决方法:

Izkata’s comment揭示了答案:特定于语言环境的比较. sort命令使用环境指示的语言环境,而Python默认使用字节顺序比较.比较UTF-8字符串比比较字节字符串更难.

$time (LC_ALL=C sort <numbers.txt >s2.txt)
real    0m5.485s
user    0m14.028s
sys     0m0.404s

那个怎么样.

上一篇:filebench - File system and storage benchmark - 模拟生成各种各样的应用的负载


下一篇:iozone - a filesystem benchmark tool 主要是用来测试文件系统 性能