编程语言
首页 > 编程语言> > 为什么coreutils排序比Python慢​​?

为什么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

那个怎么样.

标签:python,performance,benchmark,coreutils,sort
来源: https://codeday.me/bug/20190808/1624871.html