我第一次使用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微秒,而我的电脑和远程mongo电脑之间的ping时间大约是40毫秒。 我误解了单位吗? 平时这么高,我的时间怎么会这么低呢?
你可以启动一个数据包嗅探器,启动irb,然后一次一行地发出一些测试命令,但是你似乎已经准确地分析了它的动态行为。
所以,我想你有类似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测试可能会对这个问题有所了解。
简单的回答:这行不是你所期望的:
rows = coll.find(some_criteria)
特别是,它不与服务器通信。