Circular_hash_map库比std::unordered_map库整体性能效率提高了66%,远远优于std::unordered_map库。
2.Wait_free_spsc_queue<unsigned int> c1;
boost::lockfree::spsc_queue<unsigned int, boost::lockfree::capacity<4096> > boost_spsc_queue;
TEST_COUNT=1000000000次
测试情况柱形图如图:

由Wait_free_spsc_queue与boost::lockfree::spsc_queue性能测试情况柱形图可以看出:
Wait_free_spsc_queue的性能比boost::lockfree::spsc_queue的性能提高了62%,性能远远超过了boost::lockfree::spsc_queue。
3.TEST_COUNT=100000000次
测试情况柱形图如图:

由Wait_free_mpsc_ios_queue与sp_ios_push->post性能测试情况柱形图可以看出:
当TEST_COUNT=100000000次时,Wait_free_mpsc_ios_queue比sp_ios_push->post的性能提高了290%。
四、haisql_memcache性能测试
1.与memcached性能对比的测试结果
1.1运行服务器
1) 运行 memcached, 需要指定8192M内存, 以便可以测试百万以上的数据量, 指定端口号是1983,命令如下:
memcached -m 8192 -p 1983
2) 我们的程序是动态申请内存,因此,不需要指定预先分配的内存量, 直接运行就可以了,启动运行服务器命令如下:
./haisql_memcache_chinese
我们的软件默认运行端口是1971
每次测试后需要清理运行环境, memcached直接ctrl_C退出就可以了.
我们的软件因为退出时默认自动保存内存数据, 因此,需要在退出程序后,执行 rm *.txt;sync;sync 清理掉自动保存的数据, 相当于清空全部数据,这样下次启动时就是空数据表了
1.2测试 读性能
测试软件自动写入1万条记录, 然后测试读取900万次, 我们的软件执行时间是23.631秒, memcache执行时间是38.828秒, 我们的软件比memcache快64%.
我们的软件读性能如下: 读4.1Kbyte的数据包大小, 4核8线程3.4G主频DDR3内存, 读900万次数据, 900并发, 花费时间 23.631秒, 读性能38万QPS。
1.3测试 写性能
测试软件测试写入100万条记录, 我们的软件执行时间是3.136秒, memcache执行时间是4.078秒, 我们的软件比memcache快30%.
我们的软件写性能如下: 写4.1Kbyte的数据包大小, 4核8线程3.4G主频DDR3内存, 写100万次数据, 100并发, 花费时间3.136秒, 写性能32万TPS.
2.与redis性能对比的测试结果
由于redis只支持单核,不支持多核,为了与redis的性能做比较,专门找了一台双核的机器.
Intel(R) Pentium(R) CPU G3258 @ 3.20GHz,本机127.0.0.1测试, 相当于一个CPU用于测试,一个CPU用于服务器, 以便测试对比一下与Redis的单核性能对比.
单核查询性能还是比redis更快, 先插入10000条记录,900连接,每连接10000次查询,总共测试900万次查询,每次查询value包大小4096字节,redis花费93.46秒, 我们的软件花费63.792秒, 测试方法都是官方的测试软件,我们的单核性能比redis的单核性能快 46.5%.