代码之家  ›  专栏  ›  技术社区  ›  Anders

关于C语言中linq2sql性能的问题#

  •  2
  • Anders  · 技术社区  · 17 年前

    从性能的角度来看,在using()语句中包装使用linq的每个语句,还是声明一个类级实例并在每个方法中使用?

    例如:

    public void UpdateSomeRecord(Record recordToUpdate)
    {
        using(var entities = new RecordDBEntities())
        {
            // logic here...
        }
    }
    
    
    private RecordDBEntities entites = new RecordDBEntities();
    public void UpdateSomeRecord(Record recordToUpdate)
    {
        // logic here...
    }
    

    或者这两者都不重要?

    谢谢!

    2 回复  |  直到 17 年前
        1
  •  3
  •   Andrew Hare    17 年前

    这个 using 声明可能会在运行时间较长的情况下影响性能,但在这种情况下,这不应该是您的关注点。如果类型实现 IDisposable 它真的应该用 使用 这样它就可以自己清理。

    当然,这个清理代码的运行时间要比没有清理代码的运行时间长,所以我说 使用 语句的运行时间将更长。但这并不意味着你 不应该 使用 语句。我认为你 应该 使用 使用 语句,即使运行时间可能更长。

    我想我想说的是,你在这里比较苹果和橙子,因为性能比较只在被比较的代码产生相同的输出和相同的副作用时才有意义。你的例子不这样,我为什么不认为这是一个性能问题。

    在这种情况下,最佳做法是使用 使用 关于实现的类型的语句 不可分的 不管事实是 使用 语句将使方法运行更长时间。如果你需要知道 怎样 它将运行更长的时间,那么您应该使用一个分析器来确定所讨论的代码是否正在创建一个瓶颈。

        2
  •  2
  •   user151323    17 年前

    实际上,您的问题是关于LinqDataContext的终身管理。

    您可能希望阅读以下文章: Linq to SQL DataContext Lifetime Management