相关疑难解决方法(0)

为什么json.load比ast.literal_eval快一个数量级?

在回答了有关如何解析包含浮点数组的文本文件的问题之后,我运行了以下基准测试:

import timeit
import random

line = [random.random() for x in range(1000)]
n = 10000

json_setup = 'line = "{}"; import json'.format(line)
json_work = 'json.loads(line)'
json_time = timeit.timeit(json_work, json_setup, number=n)
print "json: ", json_time

ast_setup = 'line = "{}"; import ast'.format(line)
ast_work = 'ast.literal_eval(line)'
ast_time = timeit.timeit(ast_work, ast_setup, number=n)
print "ast: ", ast_time

print "time ratio ast/json: ", ast_time / json_time
Run Code Online (Sandbox Code Playgroud)

我多次运行此代码并始终得到这样的结果:

$ python json-ast-bench.py 
json: 4.3199338913
ast: 28.4827561378
time ratio ast/json:  6.59333148483
Run Code Online (Sandbox Code Playgroud)

所以它似乎jsonast这个用例快几个数量级. …

python benchmarking parsing json

10
推荐指数
1
解决办法
3419
查看次数

标签 统计

benchmarking ×1

json ×1

parsing ×1

python ×1