0

假设我有一个简单的 ASP.NET MVC Web 应用程序和一个(本地)Sql Server。作为 ORM,我使用的是 Entity Framework 4.3.1

为了弄清楚 ORM 端需要多长时间,我准备了一个简单的选择查询并打印出时间戳,比如

 ...
 using (var context = Entities()) 
 {
     (1) timestamp1
     var list = context.Database.SqlQuery<Entity>("select * from entities").ToList();
     (2) timestamp2
 }
 ...

同时,我查看了 Sql Server Profiler 以查看查询开始/结束时间。

结果如下(注意只显示毫秒,因为查询处理时间小于1sec)

  1. 时间戳 1:149 毫秒
  2. 查询开始时间:197 毫秒
  3. 查询结束时间:198 毫秒
  4. 时间戳2:199毫秒

问题)为什么在开始查询之前花了这么多时间(48 毫秒,197-149 毫秒)?有什么办法可以减少这种情况吗?

谢谢!

4

1 回答 1

0

ADO.NET EF 需要自行初始化,您会发现将来的查询执行时不会有太多延迟。另外不要忘记 SQL Server Profiler 只记录查询的执行时间,而不是与网络传输和其他开销相关的时间。

与激活 SQL Server 相关的速度也可能会变慢 - 您说它在您的计算机上是本地的,因此 SQL Server 的组件可能被调出到磁盘。在专用 SQL Server 机器上运行时性能如何?

于 2012-06-23T20:06:00.370 回答