Linux下RocksDB、LevelDB、ForestDB性能测试对比
简要说明
本次环境与http://www.cnblogs.com/oloroso/p/6306352.html中的一致。
依然是增删查改各测试10000次,每个测试重复5次取平均值。
1、不使用jemalloc和tbb测试
三个数据库除了rocksdb之外,默认都不使用jemalloc和tbb。
设置rocksdb的编译参数为make static_lib -e DISABLE_JEMALLOC=1 -j8,以便不启用jemalloc。
三个测试代码的编译命令如下:
g++ rocksdb_test.cpp -o rocksdb_test -I./include -L. -lrocksdb -lpthread -lrt -lsnappy -lgflags -lz -lbz2 -llz4 -O2
g++ leveldb_test.cpp -o leveldb_test -I../include -L. -lleveldb -O2 -Wl,-rpath=.
g++ forestdb_test.cpp -o forestdb_test -I../include -L. -lforestdb -O2 -Wl,-rpath=.
测试结果对比直方图如下

2、使用jemalloc和tbb测试
因为leveldb内没有设置使用jemalloc的代码,所以只在链接的时候添加。
forestdb使用cmake生成Makefile的时候设置变量COUCHBASE_SERVER_BUILD和_JEMALLOC的值为1来使用jemalloc。
三个测试代码的编译命令如下:
g++ rocksdb_test.cpp -o rocksdb_test -I./include -L. -lrocksdb -lpthread -lrt -lsnappy -lgflags -lz -lbz2 -llz4 -ljemalloc -ltbb -O2
g++ leveldb_test.cpp -o leveldb_test -I../include -L. -lleveldb -ljemalloc -ltbb -O2 -Wl,-rpath=.
g++ forestdb_test.cpp -o forestdb_test -I../include -L. -lforestdb -ljemalloc -ltbb -O2 -Wl,-rpath=.
测试结果对比直方图如下

测试数据和代码
leveldb和forestdb的代码见http://www.cnblogs.com/oloroso/p/6306352.html最后部分。
rocksdb的测试代码和leveldb的测试代码基本一致,只是将其中的leveldb全部改为rocksdb即可(namespace和头文件路径)。
实际测试的时候发现一个问题,rocksdb测试程序在Open数据库的时候耗时比较长,貌似花了很多时间在做一些处理,可能是和它的压缩和校验策略有关吧(RocksDB的ReadOptions默认构造时,verify_checksun为true,而LevelDB默认为false)。

5次测试平均值如下

Linux下RocksDB、LevelDB、ForestDB性能测试对比的更多相关文章
- Linux下使用Jmeter做性能测试
一.安装Jmeter 1.上传Jmeter压缩包到Linux服务器,如:/opt目录下 2.解压缩 unzip apache-jmeter-3.1.zip 3.配置环境变量:vi /etc/profi ...
- linux下rocksdb的编译安装
RocksDB起源于Facebook的实验室项目,实现了一个高性能的快速存储器,是基于C++编写的key value数据库,很多软件都是采用内置rocksdb的方式运行,所以需要我们提前安装rocks ...
- Linux下删除大量文件效率对比
来自公众号:马哥Linux运维 今天我们来测试一下Linux下面删除大量文件的效率. 首先建立50万个文件 $ test for i in $(seq 1 500000);do echo text ...
- Linux下常用压缩 解压命令和压缩比率对比
常用的格式有:tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大. 1. tar只是打包动作,相当于归档处理,不做压缩:解压也一样,只 ...
- 磁盘分区在windows和linux下的表现形式对比
写在前面的话:磁盘分区在windows下面比较好理解,在linux下会有挂载的概念,理解起来比较难,但是可以通过与windows对比,以一种通俗的方式将他们梳理清楚. ====正文开始==== 我们的 ...
- Linux下创建与解压tar, tar.gz和tar.bz2文件及压缩率对比 | 沉思小屋
刚 在qq群里面一位仁兄问到文件压缩的命令,平时工作中大多用解压缩命令,要是遇到压缩就现查(这不是一个好习惯),于是整理下Linux下创建与解压 zip.tar.tar.gz和tar.bz2文件及他们 ...
- Linux和Windows下查看环境变量方法对比
摘自:Linux和Windows下查看环境变量方法对比 一.查看所有环境变量的名称和值 Linux下:export Windows下:set 二.根据名称查该环境变量的值 Linux下:echo $环 ...
- [原创]Linux下网络性能测试Netperf工具介绍及安装
[原创]Linux下网络性能测试Netperf工具介绍及安装 1 官方网站 http://www.netperf.org/netperf/ 2 Netperf介绍 Netperf是一种网络性能的测试工 ...
- Linux和Windows的遍历目录下所有文件的方法对比
首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止.最后用函数C释放资源. 1.打开目录 #inclu ...
随机推荐
- [转]mysqldump备份还原和mysqldump导入导出语句大全详解
FROM : http://www.cnblogs.com/zeroone/archive/2010/05/11/1732834.html mysqldump备份还原和mysqldump导入导出语句大 ...
- Qt中printsupport的注意点和使用方法
问题:Qt中包含QPrintDialog.QPrinter.QPrintPreviewDialog失败:在引入printsupport后报cpp:651: error: undefined refer ...
- Reloading Java Classes 301: Classloaders in Web Development — Tomcat, GlassFish, OSGi, Tapestry 5 and so on Translation
The Original link : http://zeroturnaround.com/rebellabs/rjc301/ Copyright reserved by Rebel Inc In t ...
- HTTP和HTTPS的区别(转)
原文链接:HTTP和HTTPS的区别 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和 ...
- BusinessUnit, User, Role 中常用的APIs
前段时间为了做项目调研,写了一些测试API的例子.这些API主要涉及这些模块: BusinessUnit, User, Role.把它分享出来,希望对大家的工作有所帮助. APIs No Module ...
- 奇怪吸引子---ChenCelikovsky
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- how-to-get-a-job-in-deep-learning
http://blog.deepgram.com/how-to-get-a-job-in-deep-learning/ How to Get a Job In Deep Learning 22 SEP ...
- OpenGL中的原子操作需要注意的地方
OpenGL中的原子操作需要注意的地方 仔细阅读看画红线的部分
- [PureScript] Basic Data Constructors in PureScript
PureScript types are very extensive and we are going to experiment with type constructors and how to ...
- SpeechLib 应用
//引用组件:Interop.SpeechLib.dll //导入空间:SpeechLib //引用组件:Interop.SpeechLib.dll//导入空间:SpeechLib //1.SpVoi ...