Linux下RocksDB、LevelDB、ForestDB性能测试对比

摘要:
1.不要使用jemalloc和tbb来测试除rocksdb之外的三个数据库。将rocksdb的编译参数设置为makestatic_lib-eDISABLE_JEMALLOC=1-j8,-r路径=。测试结果的对比直方图如下。2.使用jemalloc和tbb进行测试,因为leveldb中没有设置使用jemallc的代码。

简要说明

本次环境与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=. 

测试结果对比直方图如下
no-jt

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

测试结果对比直方图如下
jt

测试数据和代码

leveldbforestdb的代码见http://www.cnblogs.com/oloroso/p/6306352.html最后部分。
rocksdb的测试代码和leveldb的测试代码基本一致,只是将其中的leveldb全部改为rocksdb即可(namespace和头文件路径)。

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

Linux下RocksDB、LevelDB、ForestDB性能测试对比第3张

5次测试平均值如下
Linux下RocksDB、LevelDB、ForestDB性能测试对比第4张

免责声明:文章转载自《Linux下RocksDB、LevelDB、ForestDB性能测试对比》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇第三次网络共享盘php checkbox 复选框下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

API测试之Postman使用完全指南(Postman教程,这篇文章就够了)

Postman Postman是一个可扩展的API开发和测试协同平台工具,可以快速集成到CI/CD管道中。旨在简化测试和开发中的API工作流。 Postman 工具有 Chrome 扩展和独立客户端,推荐安装独立客户端。 Postman 有个 workspace 的概念,workspace 分 personal 和 team 类型。Personal wor...

Robot Framework操作

Robot Framework 介绍 RobotFramework是一款基于python的开源自动化测试框架,遵守Apache License 2.0协议,在此协议下所有人都可以免费开发和使用。因为Robot Framework 是灵活和可扩展的,所以它很合适用于测试具有多种接口的复杂软件:用户接口,命令行,web service,编程接口等。RF提供很多...

pytest 基本用法

1、断言用assert,可以进行==,!=,+,-,*,/,<=,>=,is True、False,is not True、False ,in ,not in 等判断。 import pytestdef add(a,b): return a + bdef is_prime(n): if n <= 1: retur...

vs2019报错说 E0167 "const wchar_t *" 类型的实参与 "LPCSTR" 类型的形参不兼容

#include <Windows.h>int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ MessageBox( NULL, L"First blood! 你好,Visual Studio!", L" 消息...

在Eclipse中使用JUnit4进行单元测试(图文教程一)

在Eclipse中使用JUnit4进行单元测试    单元测试,JUnit4。    这两个有什么关系呢?这就好比(草)单元测试和(割草机)。用这个JUnit4工具去辅助我们进行测试。其实不理解这个也没关系,听多了见多了用多了,自然而然地就会懂了。    有人可能会想,那我直接自己编写个测试的方法不就可以了。例如写个System.out.print输出,看...

测试工具的选择和使用

Parasoft白盒测试工具集 工具名 支持语言环境 简介...