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