我正在嘗試運行一些基準測試,只用於研究目的,它有一點berkeley db和C++代碼。目前我正在使用以下代碼進行測試。我填充recors只遞增整數(我省略了諸如錯誤處理的更好的可讀性)伯克利DB和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秒)。在伯克利出版的白皮書中說,他們每秒鐘的結果高達90.700次......隨着我的基準測試,我每秒鐘有大約50,000次的輸入動作。
有沒有更好的方法來衡量伯克利? 您是否有任何有關berkeley入門和測試的代碼示例?
在此先感謝。
其他因素是否可以解釋結果的差異?例如處理器速度,硬盤速度等。 – Ferruccio 2010-09-06 13:59:51
是的,我不知道爲什麼我之前沒有想過... – Exa 2010-09-07 07:34:29