从性能的角度来看,是将利用LINQ的每个语句包装在using()语句中,还是声明一个类级实例并在每个方法中使用哪个更好?
例如:
public void UpdateSomeRecord(Record recordToUpdate)
{
using(var entities = new RecordDBEntities())
{
// logic here...
}
}
private RecordDBEntities entites = new RecordDBEntities();
public void UpdateSomeRecord(Record recordToUpdate)
{
// logic here...
}或者这两种方式都无关紧要?
谢谢!
发布于 2009-09-01 14:55:24
using语句可能会损害性能,因为它将花费更长的时间来运行,但在这种情况下,这不应该是您关心的问题。如果一个类型实现了IDisposable,那么它实际上应该被包装在一个using语句中,这样它就可以自己清理掉。
当然,这种清理代码比没有清理代码需要更长的运行时间,这就是为什么我说using语句需要更长的时间来运行。但这并不意味着您不应该使用using语句。我认为您应该使用using语句,即使它可能需要更长的运行时间。
我想我想说的是,您在这里是在比较苹果和橙子,因为只有当被比较的代码产生相同的输出和相同的副作用时,性能比较才有意义。你的例子没有,所以我不认为这是一个性能问题。
这种情况下的最佳实践是对实现IDisposable的类型使用using语句,而不管using语句是否会使方法运行更长时间。如果您需要知道它将运行多长时间,那么您应该使用分析器来确定有问题的代码是否正在造成瓶颈。
发布于 2009-09-01 14:54:22
实际上,您的问题是关于LINQ DataContext的生命周期管理。
你可以看看下面的文章:Linq to SQL DataContext Lifetime Management
https://stackoverflow.com/questions/1362904
复制相似问题