1

私は初めてMongoDBを使用し、そのパフォーマンスの時間を計ろうとしています。Windows764ビットホストを搭載したVirtualBoxUbuntu9.10ゲストでrubyを実行しています。MongoDBは、インターネットクラウドのどこかにある私のLANではなく、リモートホスト上にあります。

これが私のコードです:

time1 = Time.now
rows = coll.find(some_criteria)
puts ((Time.now - time1) * 1000).to_s

問題は、時間がとても短いので、私が見ているものを信じられないということです。私のコンピューターとリモートのmongoコンピューター間のping時間は約40ミリ秒ですが、約50、100、200マイクロの時間が表示されています。ユニットを誤解していますか?pingが非常に高い場合、どうしてタイミングを低くすることができますか?

4

2 に答える 2

1

パケット スニファーを開始し、irb を開始してから、一度に 1 行ずついくつかのテスト コマンドを発行することもできますが、その動的動作をすでに正確に分析しているようです。

それで、あなたはcoll次のようなものを手に入れたと思いますcoll = db.collection_namesか?そして、私はEnumerablecollでなければならないと思いますか?

eachその場合、メソッドを使用してオブジェクトを返すことを除いて、その呼び出しで実際に何もする必要はありません。おそらく、Enumerableから何かを要求するまで、実際には何も起こりません。

あなたは試すことができます:

time1 = Time.now
rows = coll.find(some_criteria)
o = rows.first
puts ((Time.now - time1) * 1000).to_s

これは必ずしもそれ以上かかるとは限りません。db.collection_namesが呼び出されたときに作業が完了している可能性があります。上からのirbテストは、問題にいくつかの光を当てるかもしれません...

于 2009-11-22T04:44:37.817 に答える
0

簡単な答え: この行は期待どおりに機能していません:

rows = coll.find(some_criteria)

具体的には、サーバーと通信していません。

于 2010-01-16T02:05:18.000 に答える