当我的“ping”时间如此之高时,我的Ruby“Time.now”时序怎么会这么低?

时间:2009-11-21 17:20:42

标签: windows ruby time networking ping

我第一次使用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 秒。我误解了这些单位吗?当ping如此之高时,我的时间如何才能如此低?

2 个答案:

答案 0 :(得分:1)

您可以启动数据包嗅探器,启动irb,然后一次发出一行测试命令,但您似乎已经准确地分析了它的动态行为。

所以,我想你collcoll = 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)

具体而言,它不与服务器通信。