我在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相比几乎相同的性能.
以下是有关查询的更多详细信息: