Jika Anda memiliki hasil tes yang lebih baik, tolong beri tahu saya, email saya: [email protected] , artikel ini harus digunakan sebagai titik awal.
Tidak perlu menyebutkan sumber untuk mencetak ulang, cukup posting ulang sesuka Anda.
Dasar-dasar Oracle Berkeley DB: http://www.Oracle.com/technology/products/berkeley-db/index.html
Blog resmi Berkeley DB di Tiongkok: Blog tim R&D Oracle Berkeley DB Tiongkok»
Situs resmi program pengujian kinerja BDB versi C# mengatakan bahwa dapat mencapai 45.748 item/s di XP sp3, tetapi tidak ditulis dalam C# dan mungkin lebih cepat.
Intel single-core 2.8G, 2G pada mesin ini, sekitar 15337 baris/S,
Server Xeon quad-core, sekitar 47.746 entri/S,
Hampir tidak mungkin menemukan program pengujian kinerja C# di Internet, dan hanya ada sedikit contoh. Disarankan agar Anda melihat alamat blog resmi Berkeley DB di China: Oracle Berkeley DB China R&D Team's Blog » Belajar
Berikut ini adalah program inti pengujian versi BDB C# yang ditulis oleh saudara saya.
kode
menggunakan Sistem;
menggunakan System.Collections.Generik;
menggunakan Sistem.Teks;
menggunakan BerkeleyDB;
BRBDBDefault kelas publik: IDisposable
{
BTreeDatabaseConfig btreeDBConfig;
BTreeDatabase btreeDB;
publik BRBDBDefault() : ini("bdb.db") {}
BRBDBDefault publik (string dbName)
{
btreeDBConfig = BTreeDatabaseConfig baru();
btreeDBConfig.Duplikat = DuplikatKebijakan.SORTED;
btreeDBConfig.Creation = CreatePolicy.IF_NEEDED; //Buat database jika belum ada
btreeDBConfig.PageSize = 4 * 1024; //Ukuran halaman
btreeDBConfig.CacheSize = CacheInfo baru(0, 1024 * 1024 * 80, 0);//Ukuran cache
btreeDB = BTreeDatabase.Terbuka(dbName, btreeDBConfig);
}
kekosongan publik SetData(int id, data string)
{
DatabaseEntry k = DatabaseEntry baru();
DatabaseEntry d = DatabaseEntry baru();
k.Data = BitConverter.GetBytes(id);
d.Data = ASCIIEncoding.ASCII.GetBytes(data);
mencoba
{
btreeDB.Put(k,d);
}
menangkap (Sistem.AccessViolationException av)
{
}
menangkap { }
}
public void SetData (id string, data string)
{
DatabaseEntry k = DatabaseEntry baru();
DatabaseEntry d = DatabaseEntry baru();
k.Data = ASCIIEncoding.ASCII.GetBytes(id);
d.Data = ASCIIEncoding.ASCII.GetBytes(data);
mencoba
{
btreeDB.Put(k,d);
}
menangkap (Sistem.AccessViolationException av)
{
}
menangkap { }
}
string publik GetData(int id)
{
DatabaseEntry de = DatabaseEntry baru();
de.Data = BitConverter.GetBytes(id);
KeyValuePair<DatabaseEntry, DatabaseEntry> pasangan = btreeDB.Get(de);
if (pasangan.Nilai != null)
return ASCIIEncoding.ASCII.GetString(pair.Value.Data);
return string.Kosong;
}
string publik GetData (id string)
{
DatabaseEntry de = DatabaseEntry baru();
de.Data = ASCIIEncoding.ASCII.GetBytes(id);
KeyValuePair<DatabaseEntry, DatabaseEntry> pasangan = btreeDB.Get(de);
if (pasangan.Nilai != null)
return ASCIIEncoding.ASCII.GetString(pair.Value.Data);
return string.Kosong;
}
string publik GetDBPath()
{
kembalikan btreeDB.FileName + btreeDB.DatabaseName;
}
#region IDisposable anggota
kekosongan publik Tutup()
{
btreeDB.Tutup();
}
kekosongan publik Buang()
{
if (btreeDB != null) btreeDB.Dispose();
}
#wilayah akhir
}
Mengenai pembentukan lingkungan pengujian, silakan baca sendiri blog resminya, yang sangat detail. Kode pengujian front-end tidak lagi melekat, hanya statistik siklus waktu,
Disarankan agar semua orang menggunakan CodeTimer Lao Zhao