小编Sam*_*Sam的帖子

MongoDB python绑定比java慢一个数量级?

我在mongodb用户列表上问了同样的问题:http://groups.google.com/group/mongodb-user/browse_thread/thread/b3470d6a867cd24

我希望这个论坛上有人可能会有一些见解......

我运行了一个简单的实验来比较使用python和java的游标迭代的性能,并发现python实现速度慢了大约10倍.我希望有人可以告诉我这是否有预期的差异,或者我是否在python方面做了一些明显低效的事情.

基准测试很简单:它执行查询,迭代光标,并检查每个文档中的相同字段.在python版本中,我可以每秒检查大约22k个文档.在java版本中,我可以每秒检查大约220k文档.

我已经看到了一些关于python性能的类似问题,我已经接受了建议,并确保我使用的是C扩展:

>>> import pymongo 
>>> pymongo.has_c() 
True 
>>> import bson 
>>> bson.has_c() 
True 
Run Code Online (Sandbox Code Playgroud)

最后,我不认为差异是由于python和java之间的根本区别,至少在我的测试代码级别.例如,如果我将查询的文档存储在python列表中,我可以非常快速地遍历该列表.换句话说,它不是一个低效的python for循环来解释差异.此外,在插入文档时,我获得了与Java相比几乎相同的性能.

以下是有关查询的更多详细信息:

  • python和java实现都在同一个集合上使用相同的查询,并在同一台机器上运行.
  • 该集合包含大约2000万个文档.
  • 查询返回大约200万个文档,即我正在检索大约10%的集合.
  • 每个文档包含三个简单字段:日期和两个字符串.
  • 查询被索引,并且在实际查询中花费的时间对于python和java实现都是可以忽略的.它是考虑运行时的游标迭代.

mongodb pymongo mongodb-java

26
推荐指数
1
解决办法
1591
查看次数

标签 统计

mongodb ×1

mongodb-java ×1

pymongo ×1