以下两种方法中哪一种具有更好的性能?
using( var DB_Connection_s = new DBConnection() )
{
//todo: interact with database connection
}
要不就 :
DB_Connection_s.Close();
在最后。
第一种方法是否使池化概念无用?因为如果我在每次使用时都处理连接,那么我每次都必须打开一个新连接(并且池中不会有任何连接)。
以下两种方法中哪一种具有更好的性能?
using( var DB_Connection_s = new DBConnection() )
{
//todo: interact with database connection
}
要不就 :
DB_Connection_s.Close();
在最后。
第一种方法是否使池化概念无用?因为如果我在每次使用时都处理连接,那么我每次都必须打开一个新连接(并且池中不会有任何连接)。
模式更好,using
因为 Dispose 调用无论如何都会关闭连接,但作为奖励,即使 using 内部出现问题,连接也会关闭。例如,一个异常或只是一个强制程序执行超出使用范围的返回。使用 using,您不需要显式关闭连接,这使代码更具可读性。作为另一种模式,必须尽快关闭连接。过于频繁地关闭/打开连接并没有性能缺陷,因为连接池会为您优化连接重用。
当您在连接上调用 Close 或 Dispose 时,连接会被释放回池中...
因此,无需担心因错过池连接而导致性能损失。
从代码的角度来看,差异应该很小,以至于using
应该始终使用该语句
使用处置。在 Dispose 内部,它将关闭连接,因此您无需担心,如果有疑问,可以使用 Reflector 或类似工具轻松检查。
至于性能,我仍然会使用 Using。Windows 启用了各种缓存(当然是在 ODBC 中),以确保对同一连接的重复请求可以重复使用,因此您不必担心性能。
除非你很快要再次调用 .Open() ,
使用using(){}
块。
如果您打算很快在其他地方使用相同的连接,
请调用.close();
then .open()
等等...
保持您的类实现IDisposable
并在那里处理连接!
创建 Connection 对象仍然需要时间