分享
 
 
 

C#版Oracle Berkeley DB 性能测试

王朝学院·作者佚名  2010-01-14
窄屏简体版  字體: |||超大  

大家有更好的测试结果,妨请告诉我,我的邮箱:meback@dongee.net, 此文权当抛砖引玉。

转载不必说明出处,随便转去。

Oracle Berkeley DB 基础知识:http://www.oracle.com/technology/products/berkeley-db/index.html

Berkeley DB的中国官方博客: Oracle Berkeley DB 中国研发团队的博客 » BDB C# API初探

BDB性能测试程序C#版本

官网说在XP sp3上可以达到45,748条/s,不过那不是用C#写的,估计快一些, 以下是我测的结果:

本机上Intel 单核2.8G, 2G, 大约15337条/S,

服务器至强四核的, 大约47,746条/S,

网上几乎找不到C#的性能测试程序,就是样例也极少,建议大家看看Berkeley DB的中国官方博客

地址:Oracle Berkeley DB 中国研发团队的博客 » BDB C# API初探

以下是小弟写的BDB C#版测试核心程序,大家可以参考

代码

using System;

using System.Collections.Generic;

using System.Text;

using BerkeleyDB;

public class BRBDBDefault : IDisposable

{

BTreeDatabaseConfig btreeDBConfig;

BTreeDatabase btreeDB;

public BRBDBDefault() : this("bdb.db") { }

public BRBDBDefault(string dbName)

{

btreeDBConfig = new BTreeDatabaseConfig();

btreeDBConfig.Duplicates = DuplicatesPolicy.SORTED;

btreeDBConfig.Creation = CreatePolicy.IF_NEEDED; //如果不存在数据库就创建

btreeDBConfig.PageSize = 4 * 1024;//页大小

btreeDBConfig.CacheSize = new CacheInfo(0, 1024 * 1024 * 80, 0);//缓存大小

btreeDB = BTreeDatabase.Open(dbName, btreeDBConfig);

}

public void SetData(int id, string data)

{

DatabaseEntry k = new DatabaseEntry();

DatabaseEntry d = new DatabaseEntry();

k.Data = BitConverter.GetBytes(id);

d.Data = ASCIIEncoding.ASCII.GetBytes(data);

try

{

btreeDB.Put(k, d);

}

catch (System.AccessViolationException av)

{

}

catch { }

}

public void SetData(string id, string data)

{

DatabaseEntry k = new DatabaseEntry();

DatabaseEntry d = new DatabaseEntry();

k.Data = ASCIIEncoding.ASCII.GetBytes(id);

d.Data = ASCIIEncoding.ASCII.GetBytes(data);

try

{

btreeDB.Put(k, d);

}

catch (System.AccessViolationException av)

{

}

catch { }

}

public string GetData(int id)

{

DatabaseEntry de = new DatabaseEntry();

de.Data = BitConverter.GetBytes(id);

KeyValuePair<DatabaseEntry, DatabaseEntry> pair = btreeDB.Get(de);

if (pair.Value != null)

return ASCIIEncoding.ASCII.GetString(pair.Value.Data);

return string.Empty;

}

public string GetData(string id)

{

DatabaseEntry de = new DatabaseEntry();

de.Data = ASCIIEncoding.ASCII.GetBytes(id);

KeyValuePair<DatabaseEntry, DatabaseEntry> pair = btreeDB.Get(de);

if (pair.Value != null)

return ASCIIEncoding.ASCII.GetString(pair.Value.Data);

return string.Empty;

}

public string GetDBPath()

{

return btreeDB.FileName + btreeDB.DatabaseName;

}

#region IDisposable 成员

public void Close()

{

btreeDB.Close();

}

public void Dispose()

{

if (btreeDB != null) btreeDB.Dispose();

}

#endregion

}

关于测试环境的搭建,请大家自己看官网博客,说的很详尽。前台测试代码就不粘了,就一个循环统计时间,

推荐大家用老赵的CodeTimer

1 0 0

(请您对文章做出评价)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有