إذا كانت لديك نتائج اختبار أفضل، من فضلك أخبرني عبر بريدي الإلكتروني: [email protected] ، فيجب استخدام هذه المقالة كنقطة بداية.
ليست هناك حاجة للإشارة إلى المصدر لإعادة طبعه، فقط قم بإعادة نشره كما تريد.
أساسيات قاعدة بيانات Oracle Berkeley: http://www.Oracle.com/technology/products/berkeley-db/index.html
مدونة Berkeley DB الرسمية في الصين: مدونة فريق البحث والتطوير في Oracle Berkeley DB China» استكشاف أولي لواجهة برمجة تطبيقات BDB C#
يقول الموقع الرسمي لإصدار C# من برنامج اختبار أداء BDB أنه يمكن أن يصل إلى 45,748 عنصرًا/ثانية على XP sp3، لكنه غير مكتوب بلغة C# وربما يكون أسرع، وإليك نتائج الاختبار الذي أجريته:
Intel أحادي النواة 2.8G، 2G على هذا الجهاز، حوالي 15337 خطًا/ثانية،
خادم Xeon رباعي النواة، حوالي 47.746 إدخالًا/ثانية،
يكاد يكون من المستحيل العثور على برامج اختبار أداء C# على الإنترنت، وهناك عدد قليل جدًا من الأمثلة، ومن المستحسن إلقاء نظرة على عنوان المدونة الصينية الرسمية لـ Berkeley DB: مدونة فريق البحث والتطوير في Oracle Berkeley DB China » يذاكر
فيما يلي البرنامج الأساسي للاختبار لإصدار BDB C# الذي كتبه أخي، ويمكنك الرجوع إليه.
شفرة
باستخدام النظام؛
باستخدام System.Collections.Generic؛
باستخدام System.Text؛
باستخدام بيركلي دي بي؛
الفئة العامة BRBDBDefault: IDisposable
{
BTreeDatabaseConfig btreeDBConfig;
btreeDatabase btreeDB;
BRBDBDefault() العامة: this("bdb.db") { }
BRBDBDefault العام (سلسلة 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);
}
SetData الفراغ العام (معرف كثافة العمليات، بيانات السلسلة)
{
DatabaseEntry k = new DatabaseEntry();
DatabaseEntry d = new DatabaseEntry();
k.Data = BitConverter.GetBytes(id);
d.Data = ASCIIEncoding.ASCII.GetBytes(data);
يحاول
{
btreeDB.Put(k, d);
}
الصيد (System.AccessViolationException av)
{
}
يمسك { }
}
SetData الفراغ العام (معرف السلسلة، بيانات السلسلة)
{
DatabaseEntry k = new DatabaseEntry();
DatabaseEntry d = new DatabaseEntry();
k.Data = ASCIIEncoding.ASCII.GetBytes(id);
d.Data = ASCIIEncoding.ASCII.GetBytes(data);
يحاول
{
btreeDB.Put(k, d);
}
الصيد (System.AccessViolationException av)
{
}
يمسك { }
}
سلسلة عامة GetData (معرف كثافة العمليات)
{
DatabaseEntry de = new DatabaseEntry();
de.Data = BitConverter.GetBytes(id);
KeyValuePair<DatabaseEntry, DatabaseEntry> Pair = btreeDB.Get(de);
إذا (زوج.القيمة! = فارغة)
إرجاع ASCIIEncoding.ASCII.GetString(pair.Value.Data);
سلسلة العودة. فارغة؛
}
سلسلة عامة GetData (معرف السلسلة)
{
DatabaseEntry de = new DatabaseEntry();
de.Data = ASCIIEncoding.ASCII.GetBytes(id);
KeyValuePair<DatabaseEntry, DatabaseEntry> Pair = btreeDB.Get(de);
إذا (زوج.القيمة! = فارغة)
إرجاع ASCIIEncoding.ASCII.GetString(pair.Value.Data);
سلسلة العودة. فارغة؛
}
سلسلة عامة GetDBPath ()
{
إرجاع btreeDB.FileName + btreeDB.DatabaseName;
}
# معرف المنطقة الأعضاء المتاحين
إغلاق الفراغ العام ()
{
btreeDB.Close();
}
التخلص من الفراغ العام ()
{
if (btreeDB != null) btreeDB.Dispose();
}
#endregion
}
فيما يتعلق بإنشاء بيئة الاختبار، يرجى قراءة المدونة الرسمية بنفسك، وهي مفصلة للغاية. لم يعد رمز اختبار الواجهة الأمامية ثابتًا، بل مجرد دورة إحصائيات زمنية،
من المستحسن أن يستخدم الجميع CodeTimer الخاص بـ Lao Zhao