您的位置:首页 > 其它

leveldb之简单测试

2013-09-14 18:46 375 查看
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版),其中libleveldb.so.1,libleveldb.so都是libleveldb.so.1.13的软连

3. 编译性能测试程序
源码包中自带有几个性能测试程序,一个是leveldb自身的测试程序:db_bench,还有两个分别是db_bench_sqlite3、db_bench_tree_db,分别编译之make db_bench make db_bench_sqlite3 mke db_bench_tree_db,后面两个由于依赖关系不一定能够编译通过,具体问题需要具体解决。

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;
}


编译:将之前编译好的libleveldb.a拷贝到于以上代码同一目录中然后g++ -o leveldbtest main.cpp libleveldb.a -lpthread
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: