前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ado.Net连接池的速度测试

Ado.Net连接池的速度测试

作者头像
菩提树下的杨过
发布2018-01-23 10:34:35
6550
发布2018-01-23 10:34:35
举报

晚上闲来无事,突然想测试一下Ado.Net连接池带来的连接速度提升,写了以下代码:

代码语言:js
复制
 using System;
 using System.Configuration;
 using System.Data.SqlClient;
 using System.Diagnostics;
 namespace ConsoleApplication1
 {
   class Program
   {
       static void Main(string[] args)
       {
           string _connString = ConfigurationManager.ConnectionStrings["ConnStr"].ToString();
           SqlConnection conn = new SqlConnection(_connString);
            Stopwatch sw = new Stopwatch();
            sw.Start();
           conn.Open();
           sw.Stop();
           Console.WriteLine("1连接所用时间:{0}" , sw.ElapsedTicks.ToString());
           conn.Close();//关闭连接
            sw.Reset();
           sw.Start();
           conn.Open();//现在是直接从连接池中分配的连接,所以速度要快很多
           sw.Stop();
           Console.WriteLine("2连接所用时间:{0}", sw.ElapsedTicks.ToString());
           conn.Dispose();//释放连接
           conn.ConnectionString = _connString;
            sw.Reset();
           sw.Start();
           conn.Open();//Dispose()后,仍然可以连接!(前提是必须重设连接字符串)
           sw.Stop();
           Console.WriteLine("3连接所用时间:{0}", sw.ElapsedTicks.ToString());//从输出结果上看,这一次仍然要比首次连接快很多,貌似也是从连接池中取的
           conn.Close();

           using (SqlConnection conn2 = new SqlConnection(_connString))
           {
               try
               {
                   sw.Reset();
                   sw.Start();
                   conn2.Open();//即使创建一个完全不同的新Connection对象,只要连接字符串相同,仍然会从连接池内中分配已有连接,所以速度仍然很快
                   sw.Stop();
                   Console.WriteLine("4连接所用时间:{0}", sw.ElapsedTicks.ToString());
               }
               catch (Exception)
               {
                    throw;
               }
               finally {
                   conn2.Close();
               }
           }
          
         
           //连续多次调用Close()或Dispose()不会抛出异常,但连续多次调用Open()会抛出异常
           //conn.Close();
           //conn.Close();
            //conn.Dispose();
           //conn.Dispose();
           Console.Read();
           //即使不关闭连接,程序退出时,连接也被会自动销毁
       }
   }
}

本机执行结果1: -------------------------------- 1连接所用时间:480219 2连接所用时间:130 3连接所用时间:60 4连接所用时间:47 --------------------------------

本机执行结果2: -------------------------------- 1连接所用时间:476064 2连接所用时间:137 3连接所用时间:1411 4连接所用时间:49 --------------------------------

本机执行结果3: -------------------------------- 1连接所用时间:691719 2连接所用时间:132 3连接所用时间:69 4连接所用时间:53 --------------------------------

可以明显看出,连接池技术确实让后来的Connection对象Open时速度提升不少,不过有点出乎意料的是"4连接"始终要比"2连接"快不少?既然都是从连接池内中分配的,应该速度差不多才是!另外Dispose()后,再次连接的速度,有时快,有时慢(但总体比首次连接要快),不知道是不是我机器的问题.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-06-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档