leveldbの簡単なテスト

3270 ワード

1.最新版ダウンロードアドレスhttps://code.google.com/p/leveldb/downloads/list
2.linuxシステムに置いて解凍してコンパイルするが、実はleveldbをコンパイルするのは簡単で、ダウンロードパッケージを解凍してからディレクトリに入って直接makeを実行すればいい.コンパイルが完了すると、現在のディレクトリにいくつかのファイルが生成されます.
   libleveldb.a libleveldb.so libleveldb.so.1 libleveldb.so.1.13(現在ダウンロードしているバージョンは1.13.0)libleveveldb.so.1,libleveldb.みんなlibleveveldbだso.1.13のソフトコネクタ
3.性能テストプログラムのコンパイル
ソースパッケージにはいくつかのパフォーマンステストプログラムが付属しています.1つはleveldb自身のテストプログラムです.db_bench、あと2つはdb_bench_sqlite3、db_bench_tree_db,それぞれコンパイルしたmake db_bench  make db_bench_sqlite3  mke db_bench_tree_db,後の2つは依存関係でコンパイルできるとは限らないため,具体的な問題は具体的に解決する必要がある.
4.db_の実行benchは以下のデータまで待つ
[root@localhost leveldb-1.13.0]# ./db_bench 
LevelDB:    version 1.13
Date:       Wed Sep  4 11:51:30 2013
CPU:        1 * Intel(R) Core(TM) i5 CPU       M 520  @ 2.40GHz
CPUCache:   3072 KB
Keys:       16 bytes each
Values:     100 bytes each (50 bytes after compression)
Entries:    1000000
RawSize:    110.6 MB (estimated)
FileSize:   62.9 MB (estimated)
WARNING: Snappy compression is not enabled
------------------------------------------------
fillseq               :       3.783 micros/op;   29.2 MB/s     
fillsync              :      3225.427 micros/op;    0.0 MB/s (1000 ops)
fillrandom        :      11.218 micros/op;    9.9 MB/s     
overwrite          :      18.988 micros/op;    5.8 MB/s     
readrandom     :      12.606 micros/op; (1000000 of 1000000 found)
readrandom     :       6.795 micros/op; (1000000 of 1000000 found)
readseq             :       0.311 micros/op;  355.2 MB/s    
readreverse       :       0.636 micros/op;  173.9 MB/s    
compact            :    2563542.000 micros/op;
readrandom      :    4.043 micros/op; (1000000 of 1000000 found)
readseq              :    0.269 micros/op;  411.3 MB/s    
readreverse        :    0.566 micros/op;  195.4 MB/s    
fill100K              :     6787.659 micros/op;   14.1 MB/s (1000 ops)
crc32c                :     10.426 micros/op;  374.7 MB/s (4K per op)
snappycomp     :     8702.000 micros/op; (snappy failure)
snappyuncomp :    6969.000 micros/op; (snappy failure)
acquireload       :    1.493 micros/op; (each op is 1000 loads)
前は機械に関する情報とデータを書き込む情報で、後ろは性能データで、micros/opについては値が小さいほど良く、MB/sについては値が大きいほど良いです.
5.開発用ヘッダファイルの準備
includeの下のleveldbディレクトリを/usr/include/下にコピーする:cp-r include/leveldb/usr/include/
6.簡易試験用例
//main.cpp
#include <assert>
#include <iostream>
#include <leveldb/db.h>

int main (int argc,char * argv[])
{
	leveldb::DB* db;
	leveldb::Options options;
	options.create_if_missing = true;
	std::string dbpath = "testdb";
	leveldb::Status status = leveldb::DB::Open (options, dbpath, &db);
	assert (status.ok ());
	std::string key = "test";
	std::string val = "test_value";
	s = db->Put (leveldb::WriteOptions (), key, val);
	val.clear ();
	s = db->Get (leveldb::ReadOptions (), key, &val);

	std::cout << key << ": " << val << std::endl;
}

コンパイル:以前にコンパイルしたlibleveveldb.a上記コードの同じディレクトリにコピーする、g++-o leveldbtest main.cpp libleveldb.a -lpthread