原创作者: iunknown
阅读:3012次
评论:1条
更新时间:2011-05-26
实现 spcached 的目的:不是与 memcached 进行竞争,只是为了测试。
最初想到要实现 spcached 的时候,是因为想对 spserver 这个框架做一个压力测试。当时想用作个简单的 http 服务器,然后用 apache 的 ab 工具进行测试。后来觉得如果做测试,最好能有一个对比,因此就想起了 memcached 来。并且刚好 memcached 和 spserver 都是基于 libevent 的。
memcached 是公认的高性能服务器,而且里面完全不涉及文件的 IO 操作,适合用来衡量以下几个方面:单线程 event-driven VS. 多线程,内存池 VS. 非内存池,hash table VS. BalancedTree。
memcached 采用的通信协议有详细的说明文档:
http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
spcached 就是根据这份文档进行开发的,目前只实现了测试必须的几个命令:add,set,replace,get,delete,incr,decr,stats,version,quit 。
memcached 采用 ansi c 实现,采用了很多的优化手段,包括
1.程序基于libevent,使用单线程 event-driven 的风格(1.2.0 版本,1.2.2 版本已经开始使用多线程)
2.使用了内存池
3.使用 hash table 来保存 (key, value) pair
spcached 采用 c++ 实现,对应上面的各个方面,采用的手段为
1.程序基于半同步半异步的多线程风格(使用 spserver 框架)
2.没有使用内存池,直接使用 c++ 的 new/delete/malloc/free
3.使用 BalancedTree 来保存 (key, value) pair (使用 spdict 库)
对比测试结果在后面回贴中陆续更新。
最初想到要实现 spcached 的时候,是因为想对 spserver 这个框架做一个压力测试。当时想用作个简单的 http 服务器,然后用 apache 的 ab 工具进行测试。后来觉得如果做测试,最好能有一个对比,因此就想起了 memcached 来。并且刚好 memcached 和 spserver 都是基于 libevent 的。
memcached 是公认的高性能服务器,而且里面完全不涉及文件的 IO 操作,适合用来衡量以下几个方面:单线程 event-driven VS. 多线程,内存池 VS. 非内存池,hash table VS. BalancedTree。
memcached 采用的通信协议有详细的说明文档:
http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
spcached 就是根据这份文档进行开发的,目前只实现了测试必须的几个命令:add,set,replace,get,delete,incr,decr,stats,version,quit 。
memcached 采用 ansi c 实现,采用了很多的优化手段,包括
1.程序基于libevent,使用单线程 event-driven 的风格(1.2.0 版本,1.2.2 版本已经开始使用多线程)
2.使用了内存池
3.使用 hash table 来保存 (key, value) pair
spcached 采用 c++ 实现,对应上面的各个方面,采用的手段为
1.程序基于半同步半异步的多线程风格(使用 spserver 框架)
2.没有使用内存池,直接使用 c++ 的 new/delete/malloc/free
3.使用 BalancedTree 来保存 (key, value) pair (使用 spdict 库)
对比测试结果在后面回贴中陆续更新。
1 楼 nihao7010 2010-11-17 16:13