lubh 发表于 2015-9-2 08:56:09

asp.net Cache vs memcached

  一、环境
Server:IBM X365 M3 8Core 8G RAM
OS:windows server 2008 r2 & Hyper-V+CentOS 6.2
二、代码
(1)主体代码,简单读取:



SqlDataAdapter DataAdapter = new SqlDataAdapter();
SqlConnection Conn = new SqlConnection(DataConn);
Conn.Open();
SqlCommand myCommand = new SqlCommand(sql, Conn);
DataAdapter.SelectCommand = myCommand;
DataAdapter.Fill(ds);
Conn.Close()
  (2)Memcached(客户端:BeITMemcached)



      cache.SendReceiveTimeout = 5000;
cache.MinPoolSize = 2;
cache.MaxPoolSize = 5;      
string cached_dt = cache.Get(key) as string;
if (cached_dt == null)
{
//主体代码
string str_dt = DataTableXml.SerializeDataTableXml(ds.Tables);
cache.Set(key, str_dt, 30);
}
else
{
ds.Tables.Add(DataTableXml.DeserializeDataTable(cached_dt));
}
  (3)Asp.net Cache



      if (HttpContext.Current.Cache==null)
{
//主体代码
HttpContext.Current.Cache.Insert(key, ds, null, DateTime.Now.AddSeconds(30), System.Web.Caching.Cache.NoSlidingExpiration);
}
else
{
ds = (DataSet)HttpContext.Current.Cache;
}
  三、测试工具与参数
ab -t 30 -c 50 192.168.0.226/t.aspx
说明:t.aspx页面读取Dataset 24次,for(int i=1;i<=24;i++)
四、结果
(1)Memcached
Requests per second:    293.53 [#/sec] (mean)
Time per request:       170.343 (mean)
(2)Asp.net Cache
Requests per second:    2408.06 [#/sec] (mean)
Time per request:       20.764 (mean)
五、结论
Memcached可能在对象序列化及网络上相对LocalCache性能损耗大很多!
作者:敖士伟 ao.shiwei@gmail.com
  引用:

CacheType  Cache Gets/sec

ArrayCache  365000

APC Cache  98000

FileCache  27000

MemcachedCache(TCP/IP)  12200
MySQLQueryCache(TCP/IP)  9900

MySQLQueryCache(UnixSocket)  13500
页: [1]
查看完整版本: asp.net Cache vs memcached