简要说明

本次环境与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. [转]使用mysql profiles 来查看sql 语句执行计划

    From : http://blog.csdn.net/radkitty/article/details/4632289 要使用该功能,mysql的版本必须在5.0.37版本以上.否则只能使用expl ...

  2. protobuf 更新消息和扩展,包

    一.更新一个消息类型 如果一个已有的消息格式已无法满足新的需求--如,要在消息中添加一个额外的字段--但是同时旧版本写的代码仍然可用.不用担心!更新消息而不破坏已有代码是非常简单的.在更新时只要记住以 ...

  3. windows核心编程-互斥器(Mutexes)

    线程同步的方式主要有:临界区.互斥区.事件.信号量四种方式. 前边讲过了临界区线程同步-----windows核心编程-关键段(临界区)线程同步,这章我来介绍一下互斥器(Mutexes)在线程同步中的 ...

  4. JDBC 查询的三大参数

    本文转载至 http://blog.csdn.net/turkeyzhou/article/details/5115228 DBC1.0 .JDBC2.0 .JDBC3.0 中分别用以下方法创建Sta ...

  5. 第二十八章 springboot + zipkin(brave定制-AsyncHttpClient)

    brave本身没有对AsyncHttpClient提供类似于brave-okhttp的ClientRequestInterceptor和ClientResponseInterceptor,所以需要我们 ...

  6. STM32中基于DMA的ADC采样实例之MQ-2烟雾传感器

    最近学习了一下STM32中的ADC采样,由于手头正好有一个MQ-2的烟雾传感器,所以正好可以测试一把.体验ADC采样的过程.下面介绍一下这个MQ-2烟雾传感器. 1.MQ-2烟雾传感器简介 MQ-2气 ...

  7. 推荐朋友 - LintCode

    拼多多笔试第三题 除了题目具体方法值得注意外,数据的输入格外注意 题目 描述 给n个人的朋友名单,告诉你user,请找出user最可能认识的人.(他和user有最多的共同好友且他不是user的朋友) ...

  8. Add Binary Leetcode java

    题目: Given two binary strings, return their sum (also a binary string). For example, a = "11&quo ...

  9. 纯css解决div隐藏浏览器原生滚动条,但保留鼠标滚动效果的问题

    当我们的内容超出了我们的div,往往会出现滚动条,影响美观.尤其是当我们在做一些导航菜单的时候.滚动条一出现就破坏了UI效果.  我们不希望出现滚动条,也不希望超出去的内容被放逐,就要保留鼠标滚动的效 ...

  10. ML、DL相关资源

    1. http://x-algo.cn/index.php/category/nlp/