什么更快:
(A)使用以下方法“取消腌制”(加载)腌制的字典对象 pickle.load()
要么
(B)使用以下命令将JSON文件加载到字典中 simplejson.load()
假定:案例A中已经存在腌制的对象文件,案例B中已经存在JSON文件。
速度实际上取决于数据,内容和大小。
但是,无论如何,让我们以json数据为例,看看什么更快(Ubuntu 12.04,python 2.7.3):
将此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 timeit
import pickle
import cPickle
import json
import simplejson
import ujson
import yajl
def 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.936687946
cpickle:
28.4231381416
json:
31.6450419426
simplejson:
20.5853149891
ujson:
16.9352178574
yajl:
18.9763481617
如您所见,通过酸洗/酸洗pickle
根本不是那么快-
cPickle
如果您选择酸洗/酸洗选项,这绝对是要走的路。ujson
这些特定数据的json解析器中看起来很有希望。
此外,json
和simplejson
库上加载更快pypy(见Python的JSON性能)。
也可以看看:
重要的是要注意,结果可能在您的特定系统上,在其他类型和数据大小上有所不同。
我想将废弃的数据转储到json文件中。我相信它的格式已经很好了(dictionary、list、string等)。我如何输出到json文件中?
我在本地服务器中保存了一个json文件,例如: 我想在这个json文件中写入另一个dict,我需要这样的新内容: 或: 我尝试使用json.dump()添加新元素,但显示为: 它不是有效的json文件。 如何使用json。转储,json。加载或其他方法?谢谢你的帮助!
努力将json从URL上的文件(myData.json)加载到对象中,以便访问属性值。 --数据立即加载,我在应用程序中非常需要它。 -我将访问整个应用程序中的数据,而不仅仅是数据加载后立即发生的一个函数的一部分。 --我已确保文件中的数据格式正确。 按照jQuery API上的示例,我不应该做一些简单的事情,比如: 警报(jqxhr.my财产); 得到价值吗?我错过了哪一步?我试过做评估和其他类
问题内容: 快速将NSDictionaries写入文件有局限性。根据我从api文档中学到的知识和这个答案,键类型应该是NSString,值类型也应该是NSx类型,并且Int,String和其他swift类型可能不起作用。问题是,如果我有一个像这样的字典:如何快速将其写入plist文件或从plist文件读取? 问题答案: 无论如何,当您要存储到文件时,它必须是协议的子类并符合协议。像这样: 然后,这
问题内容: 在内存使用和CPU消耗方面,在Python中更有效的方法是-字典还是对象? 背景: 我必须将大量数据加载到Python中。我创建了一个只是字段容器的对象。创建4M实例并将其放入字典中大约需要10分钟和6GB的内存。字典准备就绪后,只需眨眼即可访问。 示例: 为了检查性能,我编写了两个简单的程序,它们执行相同的操作-一个使用对象,另一个使用字典: 对象(执行时间〜18sec): 字典(执
问题内容: 我在使用Scala将字段添加到Play Framework中的Json对象时遇到问题: 我有一个包含数据的案例类。例如: 并且我能够使用Json Writes创建一个Json对象: 并且Json看起来像: 假设我想向Json对象添加一个附加的’c’字段。结果: 如何在不创建新案例类或使用Json.obj自己创建Json对象的情况下做到这一点?我正在寻找类似的东西: 任何帮助表示赞赏!