我目前正致力于一个我们必须提高性能的项目,因此已经从检索关系数据库中的数据和计算数字,预先计算数字并将它们存储在mongodb文档中。
但是现在当我们进行速度测试时,我们可以看到应用程序并不快。从关系数据库检索数据并计算数字时的查询时间约为0.8秒。而从mongodb中检索预先计算的数据平均需要2.5秒。
因此我们尝试使用控制台应用程序进行测试,我们可以看到对mongodb的相同查询平均只需要40毫秒。
什么会导致查询时间的巨大差异?
我们在Web应用程序和控制台应用程序中使用相同的MongoDB驱动程序v.2.3。它们都连接到同一个集合并搜索相同的项目。
为了测量时间,我们使用c#System.Diagnostics.Stopwatch
这是用于查询的函数
public BsonDocument findByProp(ObjectId id)
{
var filter = Builders<BsonDocument>.Filter.Eq("_id", id);
var collection = getCollection("collection").Find(filter);
return collection.First();
}
这是如何调用和测量的
Stopwatch sw = new Stopwatch();
sw.Start();
var club = m.findByProp(new MongoDB.Bson.ObjectId("5823327fc3a41f31d849cf3b"));
sw.Stop();
var elapsedTime = sw.ElapsedMilliseconds;
Web应用程序和控制台测试在连接到同一个云服务器的localhost上运行。经过的时间是在100次连续测试中计算的平均值。所以这也应该考虑到任何缓存