Spa*_*man 2 python benchmarking julia
以下脚本逐行读取gzip文件并解码JSON对象
Pkg.add("GZip")
Pkg.add("JSON")
using GZip
using JSON
stream = GZip.gzopen(Base.ARGS[1])
_started = time()
i = 0
for line in eachline(stream)
_j = JSON.parse(line)
if i % 10000 == 0
println(time()-_started)
end
i += 1
try
key_id = _j["some_id"]
except
pass
end
end
Run Code Online (Sandbox Code Playgroud)
输出:
0.7071459293365479
20.09155511856079
37.8870849609375
Run Code Online (Sandbox Code Playgroud)
与Python比较:
import os
import sys
import gzip
import datetime
import ujson as json
_started = datetime.datetime.now()
fh = gzip.open(sys.argv[1])
for i, line in enumerate(fh):
if i % 10000 == 0:
print datetime.datetime.now() - _started
line = json.loads(line)
try:
k = line['some_id']
except:
pass
Run Code Online (Sandbox Code Playgroud)
输出:
0:00:00.028951
0:00:01.934277
0:00:03.821954
0:00:05.713572
Run Code Online (Sandbox Code Playgroud)
是的,我知道,我使用了非常快的ujson - 但是Julia不应该更快吗?相反,它慢得多=(
PS多次尝试,因此它与操作系统缓存无关.
PPS Mac OS 10.7.3,Julia 0.2.1
隔离JSON和GZIP操作是一个很好的建议.我的猜测(只是一个猜测!)是大部分时间是在JSON解析; ujson的确非常快.没有办法保证语言中发生的一切都很快.例如,PyPy通常会加速python代码,但在某些情况下仍然比C扩展慢或慢.