在回答了有关如何解析包含浮点数组的文本文件的问题之后,我运行了以下基准测试:
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)