研究目的のために、小さなberkeleydbとc++コードを使用してベンチマークを実行しようとしています。現在、次のコードでテストしています。増分整数のみでレコードを埋めています(読みやすくするためにエラー処理などを省略しました)
(dbは私自身のberkeley dbクラスです)
// Open the database
db.open( NULL, db_file_name.c_str(), NULL, DB_BTREE, open_flags, 0 );
int key_content = 4000;
int data_content = 4000;
DWORD start = ::GetTickCount(); // start counter
while( i <= p_count )
{
/*sprintf_s( rec_buf, "my_record_%d", i );
std::string description = rec_buf;*/
Dbt key( &key_content, sizeof(int) );
Dbt data( &data_content, sizeof(int) );
db.put( NULL, &key, &data, DB_NOOVERWRITE );
}
DWORD end = ::GetTickCount(); // stop counter
DWORD duration = end - start;
std::cout << "Duration for " << p_count << " records: " << duration << " ms" << std::endl;
したがって、私の質問は、100.000のプットアクションの時間が約1900ミリ秒(〜2秒)であるため、これがベンチマークの効率的な方法であるかどうかです。berkeleyが発行したホワイトペーパーでは、1秒あたり最大90.700のプットアクションの結果が得られたと述べています...私のベンチマークでは、1秒あたり約50.000のプットアクションがあります。
バークレーのベンチマークを行うためのより良い方法はありますか?バークレーを使い始めてテストするためのコード例はありますか?
前もって感謝します。