相关疑难解决方法(0)

547
推荐指数
6
解决办法
50万
查看次数

如何将json序列化比Python中的yaml序列化快得多?

我的代码在很大程度上依赖于yaml来进行跨语言的序列化,并且在加速某些事情时,我注意到yaml与其他序列化方法(例如,pickle,json)相比非常慢.

所以真正让我感到震惊的是,当输出几乎相同时,json比yaml快得多.

>>> import yaml, cjson; d={'foo': {'bar': 1}}
>>> yaml.dump(d, Dumper=yaml.SafeDumper)
'foo: {bar: 1}\n'
>>> cjson.encode(d)
'{"foo": {"bar": 1}}'
>>> import yaml, cjson;
>>> timeit("yaml.dump(d, Dumper=yaml.SafeDumper)", setup="import yaml; d={'foo': {'bar': 1}}", number=10000)
44.506911039352417
>>> timeit("yaml.dump(d, Dumper=yaml.CSafeDumper)", setup="import yaml; d={'foo': {'bar': 1}}", number=10000)
16.852826118469238
>>> timeit("cjson.encode(d)", setup="import cjson; d={'foo': {'bar': 1}}", number=10000)
0.073784112930297852
Run Code Online (Sandbox Code Playgroud)

PyYaml的CSafeDumper和cjson都是用C语言编写的,所以这不是C和Python速度问题.我甚至添加了一些随机数据来查看cjson是否正在进行任何缓存,但它仍然比PyYaml快.我意识到yaml是json的超集,但是如此简单的输入,yaml序列化器怎么能慢2个数量级呢?

python serialization json yaml

53
推荐指数
5
解决办法
2万
查看次数

标签 统计

python ×2

yaml ×2

json ×1

serialization ×1