我第一次使用MongoDB并尝试计算其性能。我正在使用Windows 7 64位主机的VirtualBox Ubuntu 9.10 guest上运行ruby。 MongoDB位于远程主机上,而不是我在互联网云中的局域网上。
这是我的代码:
time1 = Time.now
rows = coll.find(some_criteria)
puts ((Time.now - time1) * 1000).to_s
问题是,时间太短了,我不相信我所看到的。我看到的时间大约是50,100,200 MICRO 秒,而我的计算机和远程mongo计算机之间的ping时间大约是40
答案 0 :(得分:1)
您可以启动数据包嗅探器,启动irb,然后一次发出一行测试命令,但您似乎已经准确地分析了它的动态行为。
所以,我想你coll
有coll = db.collection_names
之类的东西?我想coll
必须是 Enumerable ?
如果是这样,除了使用each
方法返回对象之外,该调用中不需要发生任何事情。在您从 Enumerable 中询问之后,可能确实没有任何事情发生。
您可以尝试:
time1 = Time.now
rows = coll.find(some_criteria)
o = rows.first
puts ((Time.now - time1) * 1000).to_s
这不一定需要更长时间。调用db.collection_names
时可能会完成工作。从顶部开始的irb测试可能会对这个问题有所了解......
答案 1 :(得分:0)
简单回答:这条线没有达到预期效果:
rows = coll.find(some_criteria)
具体而言,它不与服务器通信。