Raven.Server が起動し、ポート 8022 にバインドされました。次の方法で DataStore を初期化します。
var store = new DocumentStore() { Url = "http://localhost:8022" };
store.Initialize();
次に、そのようなクエリを作成しています:
using (var session = store.OpenSession())
{
Stopwatch watch = new Stopwatch();
watch.Start();
var result = session.LuceneQuery<Item>("Raven/DocumentsByEntityName")
.WhereEquals("Tag", "Items")
.ToList();
watch.Stop(); // watch.ElapsedMilliseconds == ~550 ms
return result;
}
そしてwatch.ElapsedMilliseconds
常に〜550ミリ秒です。しかし、RavenDB コンソールを見ると、クエリが 3 ミリ秒で処理されていることがわかります。
Request # 170: GET - 3 ms - 200 - /indexes/Raven/DocumentsByEntityName?query=Tag%253A%255B%255BItems%255D%255D&start=0&pageSize=128
したがって、時間の ~ 99.5% は RavenDB 以外で費やされています。何が問題ですか?(RavenDB 147)
RavenDB のセルフホスティング (つまり、組み込みクライアントとして) に切り替えると、すべて問題ありません (~3ms)。
ネットワーク、httpデバッガー、dnsサーバーなどではないその問題を明確にするために、これもテストしました:
Stopwatch watch = new Stopwatch();
watch.Start();
WebClient client = new WebClient();
var result = client.DownloadString("http://127.0.0.1:8022/indexes/Raven/DocumentsByEntityName?query=Tag%253A%255B%255BItems%255D%255D&start=0&pageSize=128");
watch.Stop(); // watch.ElapsedMilliseconds == ~3-10ms
速い。ただし、Raven.Client.Lightweight に切り替えると、応答時間が 200 倍 (550 ~ 600 ミリ秒) 増加します。