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
)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理