国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#版Oracle Berkeley DB 性能測試

2019-11-17 03:52:58
字體:
來源:轉載
供稿:網友
大家有更好的測試結果,妨請告訴我,我的郵箱: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
(請您對文章做出評價)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林西县| 资溪县| 白银市| 香格里拉县| 陆良县| 施甸县| 伊川县| 平阴县| 萍乡市| 汽车| 淮阳县| 山东| 万源市| 康保县| 土默特左旗| 广水市| 夏河县| 塔河县| 政和县| 宁远县| 揭东县| 泰和县| 尤溪县| 岳阳县| 阿瓦提县| 灌南县| 阿鲁科尔沁旗| 钟山县| 阳城县| 海阳市| 黄浦区| 江津市| 冕宁县| 米林县| 定陶县| 双辽市| 马山县| 腾冲县| 铁力市| 文昌市| 云龙县|