Mar*_*bec 5 c# performance driver mongodb mongodb-.net-driver
我正在使用 C# 驱动程序测试 MongoDB (3.0),我注意到一些奇怪的事情。
我开始 test db localy 然后我创建了测试控制台应用程序。在那里,我这样做是为了初始化驱动程序:
var client = new MongoClient();
var database = client.GetDatabase("test");
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,但后来我尝试根据 id(默认索引)获取数据,所以我添加了以下内容:
var collection = database.GetCollection<BsonDocument>("myData");
var filter = Builders<BsonDocument>.Filter.Eq("id", "F1234");
var result = collection.Find(filter).ToListAsync().Result;
Run Code Online (Sandbox Code Playgroud)
为了获得平均时间消耗,我添加了代码来测量查询的时间(通过用两个 DateTime.Now 装饰它然后减去它们 - 我知道,脏)并将所有代码放入循环中。另外,我让每次迭代时间显示在控制台上
现在每次我按 F5,第一次迭代大约需要 150 毫秒,但下一次迭代平均约为 1 毫秒。重要的是,这与缓存无关,因为每次迭代都可以查询不同的 id 并且结果完全相同。此外,我可以在每次迭代时再次初始化 MongoClient,但它的行为始终如我所描述的那样。
应用程序启动后的每个第一次查询都需要更多时间。
我需要知道,这是否真的是由于 MongoClient 内部的一些初始化(也许某些静态类是通过第一次查询进行初始化的?),或者这是否可以在运行应用程序时随时发生。
注意:我还尝试用 Thread.Sleep 替换查询,以确保它不是某些 .NET 问题。事实并非如此。确实是“collection.Find”在第一次使用时需要更多时间。
谢谢!
一段时间后注意
所以过了一段时间,我发现每个 CRUD 操作都需要它的“预热第一请求”。有时每个集合上的每个 CRUD 操作。奇怪的。我发布这个是为了让其他人知道:-)
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |