簡要說明
本次環境與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次測試平均值如下