测试方法:开N个线程 ,每个线程set(或者get、delete) 10000次,表格如下(数据为tps,仅供参考)
线程数 | spymemcached | xmemcached | ||||
set | get | delete | set | get | delete | |
1 | 2870 | 2922 | 3018 | 2237 | 2352 | 2500 |
10 | 11015 | 11227 | 11449 | 8579 | 10440 | 8354 |
50 | 19838 | 20685 | 22727 | 13239 | 24113 | 14382 |
100 | 25427 | 22646 | 26700 | 18068 | 29046 | 18259 |
结论:显然在简单类型的读写上,spymemcached全面占优,xmemcached唯一的亮点在于高并发下get的效率超过了spymemcached。对于连续的get操作,xmemcached将 合并成一个批量的get操作提交,从而提高效率。
读写100个元素的map,map的value是个自定义类,启动N个线程,每个线程set(或者get、delete) 100次,表格如下
线程数 | spymemcached | xmemcached | ||
set | get | set | get | |
1 | 492 | 492 | 427 | 492 |
10 | 159 | 680 | 1103 | 1122 |
50 | 57 | 1103 | 1561 | 1226 |
100 | 71 | 1308 | 1530 | 1223 |
结论:在复杂对象的读写上,xmemcached全面占优。两者的CPU和内存占用差不多,肉眼观察做不得准。比较奇怪的是spymemcached的set竟然那么慢。