c++ - Berkeley DB 和 C++ 基准示例?

标签 c++ c oracle benchmarking berkeley-db

我正在尝试使用一些 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 的代码示例吗?

提前致谢。

最佳答案

基本上,只有当所有其他变量都保持不变时,才能将性能数据与另一个基准测试结果进行比较。 这些变量可能是详尽无遗的,我将尝试放置其中的一些

  1. 处理者。
  2. 内存
  3. 磁盘吞吐量
  4. 加载系统。
  5. 操作系统。
  6. 编译参数。
  7. 正在对操作系统和数据库进行基准测试的相应系统的调整参数。
  8. 数据大小。

关于c++ - Berkeley DB 和 C++ 基准示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3651996/

相关文章:

c++ - 如何将指针数组分配给数组

c++ - 使用 cublas sgemv 时如何跳过 float4 中的第四个元素?

c - 如何从文本文件中读取数据并使用 malloc 为文本文件中的每个单词分配内存空间作为二维字符串数组

sql - 将一个sql查询的结果合并到另一个sql查询中

java - JDBC Oracle 错误 : java. sql.SQLException: ORA-12592: TNS: 数据包错误

c++ - 在 C++ 中使用 JNI 时出现 c0000005 异常(访问冲突)

c++ - 带有 MS vc 2013 Express 的 CppCMS Hello World 应用程序

c - 如何将实际字符存储到数组中?

c - 结构定义应该放在 .h 还是 .c 文件中?

Oracle regexp,如果字符串以数字开头,则在开头查找长度为 3 的数字。否则,查找末尾长度为 3 位的数字