我指的是一篇文章,它侧重于加速LINQ到SQL查询。其中提到的一个技术是“使用已编译的查询”,并解释了如何使用它。
我想看到编译查询的性能改进,因此我尝试了作者提供的相同示例。我使用Northwind Db作为数据上下文。我尝试了正常执行和编译查询执行,并在LINQ PAD上进行了检查。
首先,我尝试执行未使用CompileQuery的查询。它花费了2.065秒。
重新多次执行它们的结果表明,这两种方法所需的时间几乎相同。
在这里,我们只看到每种方法执行了两个查询。我尝试对它们各自进行了10次查询,但它们都在大约7秒钟左右完成。
预编译查询是否真的可以提高性能?还是我的使用方式有误?
感谢您的时间和考虑。
编辑:阅读被接受的答案后,读者可能还想通过this article来了解如何编译查询以提高性能的详细说明。
我想看到编译查询的性能改进,因此我尝试了作者提供的相同示例。我使用Northwind Db作为数据上下文。我尝试了正常执行和编译查询执行,并在LINQ PAD上进行了检查。
首先,我尝试执行未使用CompileQuery的查询。它花费了2.065秒。
var oo = from o in Orders
where o.OrderDetails.Any (p => p.UnitPrice > 100)
select o;
oo.Dump ("Order items with unit price more than $100");
var oo1 = from o in Orders
where o.OrderDetails.Any (p => p.UnitPrice > 10)
select o;
oo1.Dump ("Order items with unit price more than $10");
其次,使用CompileQuery的查询。花费了2.100秒。
var oo = CompiledQuery.Compile ((TypedDataContext dc, decimal unitPrice) =>
from o in Orders
where o.OrderDetails.Any (p => p.UnitPrice > unitPrice)
select o
);
oo (this, 100).Dump ("Order items with unit price more than $100");
oo (this, 10).Dump ("Order items with unit price more than $10");
重新多次执行它们的结果表明,这两种方法所需的时间几乎相同。
在这里,我们只看到每种方法执行了两个查询。我尝试对它们各自进行了10次查询,但它们都在大约7秒钟左右完成。
预编译查询是否真的可以提高性能?还是我的使用方式有误?
感谢您的时间和考虑。
编辑:阅读被接受的答案后,读者可能还想通过this article来了解如何编译查询以提高性能的详细说明。