我认为Python的本地DBM应该比NOSQL数据库(如东京Cabinet、MongoDB等)要快得多(因为Python DBM的特性和选项较少,即系统更简单)。我用一个非常简单的写/读示例测试
#!/usr/bin/python
import time
t = time.time()
import anydbm
count = 0
while (count < 1000):
db = anydbm.open("dbm2", "c")
db["1"] = "something"
db.close()
db = anydbm.open("dbm", "r")
print "dict['Name']: ", db['1'];
print "%.3f" % (time.time()-t)
db.close()
count = count + 1
读/写:1.3秒 读数:0.3秒 写入:1.0s
MongoDb的这些值至少快5倍。这真的是Python DBM的性能吗?
Python没有内置的DBM实现。它的DBM功能基于一系列DBM风格的第三方库,如AnyDBM、Berkeley DBM和GNU DBM。
Python的字典实现对于键值存储非常快速,但不是持久的。如果您需要高性能的运行时键值查找,那么您可能会找到一个更好的字典—您可以使用cpickle或shelve之类的工具来管理持久性。如果启动时间对您很重要(如果您正在修改数据,则终止时间)比运行时访问速度更重要,那么DBM之类的东西会更好。
在您的评估中,作为主循环的一部分,您包含了dbm打开调用和数组查找。打开一个DBM来存储一个值,在查找之前关闭并重新打开它,这是一个非常不现实的用例,并且您看到了以这种方式管理持久性数据存储时的典型缓慢性能(这是非常低效的)。
根据您的需求,如果您需要快速查找,并且不太关心启动时间,DBM可能是一个解决方案-但是要对其进行基准测试,只能在循环中包含写和读操作!以下内容可能适合:
相关问题 更多 >
编程相关推荐