测试1:开N个线程读写删各10000次,key是String,Value是Integer,数据单位皆为TPS
线程数 set get delete xmemcached spymemcached xmemcachedspymemcached xmemcachedspymemcached 1 3368 3047 3422 3232 3787 3404 10 12307 11742 15274 12623 13473 13473 50 22115 23021 30769 22630 24483 23222 100 22448 25467 32569 24105 25538 28119 200 24187 26165 35320 21379 26683 28181 500 24623 28810 36955 14328 27609 29789
观察下结果,明显的一点是xmemcached的get比之spyememcached快得多,考虑到memcached是作为缓存使用,这一点很重要。在set、delete上面仍然比spymemcached稍有不如,但是差距已经很小。
测试2:开N个线程读写各100次,key是String,Value是100个元素的map(map的key和value分别是String和一个自定义类NameClass),memcached内存加大,防止lru起作用。
线程数 set get xmemcached spymemcached xmemcachedspymemcached 1 492 377 581 531 10 1362 84 831 753 30 1536 66 1015 872 50 1608 68 1126 1084 100 1576 67 989 1347
观察数据结果,难以理解的是spymemcached在写集合方面竟然如此低效,通过jprofiler观察两者的CPU占用,最大头的都是序列化自定义对象;不过我昨天在ubuntu下开发xmemcached的时候随手测过,spymemcached写集合并没有在windows下这么慢。
以上测试数据使用的memcached是2.2版本,xmemcached是0.6版本,系统是windows xp,AMD双核2G内存,memcached是跑在局域网内的服务器上,版本是1.2.2。linux下的测试数据等晚上回家补上。
相关资源:xmemcached 2.4.6.rar