leveldb之简单测试


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




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在Python中,"import leveldb"是用于导入LevelDB的Python开发包,使得我们可以在代码中使用LevelDB的功能和方法。 当我们在代码中使用"import leveldb"时,我们可以通过创建一个LevelDB对象来打开一个数据库连接,从而可以对数据库进行读写操作。然而,如果我们尝试在已经打开的连接上再次打开连接,就会引发错误。这是因为LevelDB只允许一个进程同时持有一个数据库的锁定。如果数据库已经被其他进程锁定,就会出现"leveldb.LevelDBError: IO error: lock /var/tmp/ldb1.ldb/LOCK: already held by process"的错误提示。 此外,LevelDB还提供了一些API用法。在使用LevelDB之前,我们可以包装相关的import语句和Options对象来打开和关闭数据库连接,以及其他操作。具体的API用法可以参考LevelDB的官方文档或相关教程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [LevelDB的Python开发包 py-leveldb基本使用方法的代码](https://blog.csdn.net/weixin_43896490/article/details/121946555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [leveldb 的部署和使用](https://blog.csdn.net/Moolight_shadow/article/details/119276763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [leveldb:LevelDB到Java的端口](https://download.csdn.net/download/weixin_42098892/18545599)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值