我一直在寻找比较L2S和EF的最新性能基准测试,并且无法使用EF的发布版本找到任何经过测试的调用存储过程.所以,我运行了一些自己的测试,发现了一些有趣的结果.
这些结果看起来是否合适?我应该以不同的方式进行测试吗?
上下文的一个实例,一个sproc的调用:(死链接)
上下文的一个实例,同一个sproc的多次调用:(死链接)
上下文的多个实例,同一个sproc的多次调用:(死链接)
我认为你应该以一种不同的方式测试它,以便区分启动成本和执行成本.特别是实体框架由于需要编译数据库视图而具有大量的启动成本(尽管您可以提前执行此操作).同样,LINQ有一个编译查询的概念,如果多次执行查询,这将是合适的.
对于许多应用程序,查询执行成本将比启动成本更重要.对某些人来说,情况恰恰相反.由于这些的性能特征不同,我认为区分它们很重要.特别是,将启动成本平均化为重复执行的查询的平均成本是误导性的.