栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

什么更快-将腌制的字典对象或JSON文件加载到字典?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么更快-将腌制的字典对象或JSON文件加载到字典?

速度实际上取决于数据,内容和大小。

但是,无论如何,让我们以json数据为例,看看什么更快(Ubuntu 12.04,python 2.7.3):

  • pickle
  • cPickle
  • json
  • simplejson
  • ujson
  • yajl

将此json结构转储到

test.json
test.pickle
文件中:

{    "glossary": {        "title": "example glossary",        "GlossDiv": { "title": "S", "GlossList": {     "GlossEntry": {         "ID": "SGML",         "SortAs": "SGML",         "GlossTerm": "Standard Generalized Markup Language",         "Acronym": "SGML",         "Abbrev": "ISO 8879:1986",         "GlossDef": {  "para": "A meta-markup language, used to create markup languages such as DocBook.",  "GlossSeeAlso": ["GML", "XML"]         },         "GlossSee": "markup"     } }        }    }}

测试脚本:

import timeitimport pickleimport cPickleimport jsonimport simplejsonimport ujsonimport yajldef load_pickle(f):    return pickle.load(f)def load_cpickle(f):    return cPickle.load(f)def load_json(f):    return json.load(f)def load_simplejson(f):    return simplejson.load(f)def load_ujson(f):    return ujson.load(f)def load_yajl(f):    return yajl.load(f)print "pickle:"print timeit.Timer('load_pickle(open("test.pickle"))', 'from __main__ import load_pickle').timeit()print "cpickle:"print timeit.Timer('load_cpickle(open("test.pickle"))', 'from __main__ import load_cpickle').timeit()print "json:"print timeit.Timer('load_json(open("test.json"))', 'from __main__ import load_json').timeit()print "simplejson:"print timeit.Timer('load_simplejson(open("test.json"))', 'from __main__ import load_simplejson').timeit()print "ujson:"print timeit.Timer('load_ujson(open("test.json"))', 'from __main__ import load_ujson').timeit()print "yajl:"print timeit.Timer('load_yajl(open("test.json"))', 'from __main__ import load_yajl').timeit()

输出:

pickle:107.936687946cpickle:28.4231381416json:31.6450419426simplejson:20.5853149891ujson:16.9352178574yajl:18.9763481617

如您所见,通过酸洗/酸洗

pickle
根本不是那么快-
cPickle
如果您选择酸洗/酸洗选项,这绝对是要走的路。
ujson
这些特定数据的json解析器中看起来很有希望。

此外,

json
simplejson
库上加载更快pypy(见Python的JSON性能)。

也可以看看:

  • Pickle vs JSON —哪个更快?

重要的是要注意,结果可能在您的特定系统上,在其他类型和数据大小上有所不同。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609094.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号