我正在尝试使用一些 berkeley db 和 c++ 代码运行基准测试,仅用于研究目的。目前我正在使用以下代码进行测试。我只用递增的整数填充记录(为了更好的可读性,我省略了诸如错误处理之类的东西)
(db是我自己的伯克利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 秒)。在伯克利发布的一份白皮书中,他们说他们每秒有高达 90.700 个 put-actions 的结果......通过我的基准测试,我每秒大约有 50.000 个 put-actions。
有没有更好的方法来衡量伯克利?您是否有任何代码示例用于开始和测试 berkeley?
提前致谢。