简要说明

本次环境与http://www.cnblogs.com/oloroso/p/6306352.html中的一致。

依然是增删查改各测试10000次,每个测试重复5次取平均值。

1、不使用jemalloc和tbb测试

三个数据库除了rocksdb之外,默认都不使用jemalloctbb

设置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=.

测试结果对比直方图如下

测试数据和代码

leveldbforestdb的代码见http://www.cnblogs.com/oloroso/p/6306352.html最后部分。

rocksdb的测试代码和leveldb的测试代码基本一致,只是将其中的leveldb全部改为rocksdb即可(namespace和头文件路径)。

实际测试的时候发现一个问题,rocksdb测试程序在Open数据库的时候耗时比较长,貌似花了很多时间在做一些处理,可能是和它的压缩和校验策略有关吧(RocksDB的ReadOptions默认构造时,verify_checksuntrue,而LevelDB默认为false)。

5次测试平均值如下

Linux下RocksDB、LevelDB、ForestDB性能测试对比的更多相关文章

  1. Linux下使用Jmeter做性能测试

    一.安装Jmeter 1.上传Jmeter压缩包到Linux服务器,如:/opt目录下 2.解压缩 unzip apache-jmeter-3.1.zip 3.配置环境变量:vi /etc/profi ...

  2. linux下rocksdb的编译安装

    RocksDB起源于Facebook的实验室项目,实现了一个高性能的快速存储器,是基于C++编写的key value数据库,很多软件都是采用内置rocksdb的方式运行,所以需要我们提前安装rocks ...

  3. Linux下删除大量文件效率对比

    来自公众号:马哥Linux运维 今天我们来测试一下Linux下面删除大量文件的效率. 首先建立50万个文件 $ test   for i in $(seq 1 500000);do echo text ...

  4. Linux下常用压缩 解压命令和压缩比率对比

    常用的格式有:tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大. 1. tar只是打包动作,相当于归档处理,不做压缩:解压也一样,只 ...

  5. 磁盘分区在windows和linux下的表现形式对比

    写在前面的话:磁盘分区在windows下面比较好理解,在linux下会有挂载的概念,理解起来比较难,但是可以通过与windows对比,以一种通俗的方式将他们梳理清楚. ====正文开始==== 我们的 ...

  6. Linux下创建与解压tar, tar.gz和tar.bz2文件及压缩率对比 | 沉思小屋

    刚 在qq群里面一位仁兄问到文件压缩的命令,平时工作中大多用解压缩命令,要是遇到压缩就现查(这不是一个好习惯),于是整理下Linux下创建与解压 zip.tar.tar.gz和tar.bz2文件及他们 ...

  7. Linux和Windows下查看环境变量方法对比

    摘自:Linux和Windows下查看环境变量方法对比 一.查看所有环境变量的名称和值 Linux下:export Windows下:set 二.根据名称查该环境变量的值 Linux下:echo $环 ...

  8. [原创]Linux下网络性能测试Netperf工具介绍及安装

    [原创]Linux下网络性能测试Netperf工具介绍及安装 1 官方网站 http://www.netperf.org/netperf/ 2 Netperf介绍 Netperf是一种网络性能的测试工 ...

  9. Linux和Windows的遍历目录下所有文件的方法对比

    首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止.最后用函数C释放资源. 1.打开目录 #inclu ...

随机推荐

  1. 细说SQL Server中的加密【转】

    简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...

  2. ajax hash缓存

    hash 模拟url路由 function hashdone(){        var hash;        hash=(!window.location.hash)?"#one&qu ...

  3. bash: php: command not found

    bash: php: command not found 解决:export PATH=$PATH:/usr/local/php/bin

  4. 启动项目时出现Not a JAR.......Find JAR........一指循环就是起不来

    出现问题原因就是mapper的映射文件有问题,里面的返回类型如是实体找不到或者找重复的就会这样 解决办法就是:确保在用的实体(路径)能找到,切记不能有重名的实体

  5. memory拷贝与string拷贝的区别

    1.memory拷贝,根据拷贝的字节个数,从src一个一个字节拷贝到dst,拷贝过程不管src的取值,也不管dst是否能容纳.2.因此,对于memory拷贝,src中NULL字符(取值为0的字符)后面 ...

  6. 解决jetty runner锁定js

    在web.xml中添加 <servlet> <!-- Override init parameter to avoid nasty --> <!-- file locki ...

  7. Android 演示 Android ListView 和 github XListView(3-3)

    本文内容 环境 项目结构 演示 1:简单 XListView 演示 2:XListView + Fragment 演示 3:XListView + ViewPager + Fragment 本文三个演 ...

  8. javascript获取和设置URL中的参数

    勘误版 function getQuery(key, url) { url = url || window.location.href; if (url.indexOf('#') !== -1) ur ...

  9. 微信小程序 - 日期(起止)选择器组件

    2019-01-03 : 修复了日期day-1,新增了年月日(除去时分秒),删除了不必要的touchmove 新增: column: ""(年月日) 配置: pickerConfi ...

  10. Excel 2007 若干技巧。

    1.自定义序列 office按钮→excel选项→常用→编辑自定义列表 2.无法清空剪贴板错误的处理办法: 取消"显示粘贴选项"选项 3.每次选定同一单元格 输入后按ctrl+En ...