2

研究目的のために、小さな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のプットアクションがあります。

バークレーのベンチマークを行うためのより良い方法はありますか?バークレーを使い始めてテストするためのコード例はありますか?

前もって感謝します。

4

1 に答える 1

2

基本的に、パフォーマンスの数値は、他のすべての変数が一定である場合にのみ、別のベンチマーク結果と比較できます。これらの変数は網羅的である可能性があります私はそれらのいくつかを入れようとします

  1. プロセッサ。
  2. メモリー
  3. ディスクスループット
  4. システムにロードします。
  5. オペレーティング·システム。
  6. コンパイルパラメータ。
  7. OSとdbの両方でベンチマークされているそれぞれのシステムのチューニングパラメータ。
  8. データサイズ。
于 2010-09-06T14:25:33.840 に答える