我正在尝试使用一些 berkeley 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 进行基准测试? 您有任何用于开始使用和测试 berkeley 的代码示例吗?
提前致谢。
最佳答案
基本上,只有当所有其他变量都保持不变时,才能将性能数据与另一个基准测试结果进行比较。 这些变量可能是详尽无遗的,我将尝试放置其中的一些
- 处理者。
- 内存
- 磁盘吞吐量
- 加载系统。
- 操作系统。
- 编译参数。
- 正在对操作系统和数据库进行基准测试的相应系统的调整参数。
- 数据大小。
关于c++ - Berkeley DB 和 C++ 基准示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3651996/