目的
Erlang自带了名为ETS(Erlang Term Storage)的纯RAM存储系统,以及名为DETS(Disk-based Erlang Term Storage)的RAM/Disk混合存储系统。为了评价ETS/DETS的性能并和Memcached进行比较,需要进行本测试。
测试环境
公司配发的笔记本,Intel Duo 1.8GHz(双核),1GB RAM,60G SATA HD,Linux kernel 2.6.24(Ubuntu 8.04 Hardy)。
Erlang OTP/R12B4,使用自带的ETS/DETS模块。
Memcached 1.2.2,使用libmemcached 0.22作为客户端。
测试用例
循环插入100w次简单键值对,键值均为32-bit整数循环变量值,因此每个键值对的有效大小为(4+4)=8个byte。
测试结果
Erlang ETS
运行时间1.914s,QPS 522466.04
Erlang DETS
运行时间45.603s,QPS 21928.38
Memcached
运行时间54.22s,QPS 18443.3
初步结论
在测试使用的场景下,可以看出Erlang ETS的性能遥遥领先,这应该是因为ETS存储资源都在单个OS进程内,无须额外协议进行交互所致;Erlang DETS和Memcached的性能基本一致。