速度

2012-04-24 102 views
-1

你知道是什么样的速度差:速度

  • 泡菜
  • 搁置
  • sqlite的
  • 一些MySQL的连接器
  • MongoDB的
  • ...

如果我想存储许多字符,这将是最好的方式,有什么区别?

+2

我会说这个问题会为SO创造太多的讨论 - 这里唯一的好答案是'它取决于'。 – 2012-04-24 16:49:16

+0

真的吗?我的意思是我可以编写测试套件来存储和检索10000字典,但这需要一段时间。这不是一项明确的任务吗?但是我知道有些问题出于某种原因让人感到害怕:( – Gerenuk 2012-04-24 16:55:27

+0

您的字典包含什么内容?您是仅从Python代码访问它,还是需要从其他位置访问它?您拥有哪些资源(单独DB服务器)?你总是会知道你的数据的来源吗?安全是一个问题吗?现有的代码是什么以及它使用了什么?有大量的细节可以改变这个问题的答案 – 2012-04-24 16:57:04

回答

2

我不想拖出评论,所以我会回答。

鉴于你所说的:

没有服务器,没有现成的代码。我只想编写一个本地存储字符串的程序,将字符串字符串存储在文件或其他内容中。没有比这更花哨的。

我会说你最好的选择这样简单的事情可能是像JSON。但是,如果你需要超快,它可能不是最好的解决方案(或者它可能是 - 我真的不知道它是如何执行的)。这很简单,并且在大多数平台上都有它的实现,它涵盖了你想要的许多地方。如果你想要尽可能快的速度,我的建议是测试它,这是你肯定知道的唯一方法。当然,简单通常是速度的好兆头。

您还没有提供足够的信息来了解性能在这里有多重要。请记住,除非你需要需要的性能(可证明),那么不要打扰优化,直到你做。寻找易于阅读和维护代码的东西,并且易于与文件端协同工作。这就是我推荐JSON的原因。

1

对于字符串字典的持久字符串,anydbm非常合理。 bsddb可以从anydbm中使用,并且速度很快但对被中断有点敏感。 gdbm可以从anydbm中使用,速度较慢但不太可能产生损坏的数据库。

此外,如果你想读取整个字典到内存中,做出很多改变,并将结果字典写回去,有:http://stromberg.dnsalias.org/svn/dohdbm/trunk/我正在使用这个在备份软件项目。如果你愿意的话,它会压缩你的字典,如果你的I/O速度特别慢,或者你有很多修改需要的话,这可能会是性能上的胜利。