我一直在寻找比较L2S和EF的最新性能基准,并且找不到任何使用发布版本的EF测试的调用存储过程.所以,我运行了一些我自己的测试,并发现一些有趣的结果.
这些结果是否正确?我应该用不同的方式进行测试吗?
上下文的一个实例,sproc的一个调用:
(死链)
上下文的一个实例,同一个sproc的多个调用:
(死链)
上下文的多个实例,同一个sproc的多个调用:
(死链)
解决方法
我认为你应该以一种不同的方式进行测试,以区分
startup costs vs. execution costs.实体框架尤其具有
startup costs resulting from the need to compile database views(尽管你可以提前做到这一点).同样,LINQ有一个
compiled query的概念,如果多次执行查询,这将是适当的.
对于许多应用程序,查询执行成本将比启动成本更为重要.对于某些人来说,相反的可能是真的.由于这些性能特点不同,我认为区分它们很重要.特别地,将启动成本平均化成重复执行的查询的平均成本是误导的.