Пример Беркли DB и C ++? - PullRequest
       18

Пример Беркли DB и C ++?

1 голос
/ 06 сентября 2010

Я пытаюсь запустить тесты с небольшим кодом Berkeley DB и C ++, просто для исследовательских целей.В настоящее время я тестирую со следующим кодом.Я заполняю записи только увеличивающимися целыми числами (я пропустил такие вещи, как обработка ошибок для лучшей читаемости)

(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, говорится, что у них были результаты до 90,700 пут-действий в секунду ... Благодаря моему бенчмаркингу у меня примерно 50,000 пут-действий в секунду.

Есть ли лучший способ для сравненияBerkeley?У вас есть примеры кода для начала работы и тестирования Беркли?

Заранее спасибо.

1 Ответ

2 голосов
/ 06 сентября 2010

В основном показатели производительности можно сравнивать с другими результатами бенчмаркинга, только когда все остальные переменные постоянны Эти переменные могут быть исчерпывающими, я постараюсь указать некоторые из них

  1. Процессор.
  2. Память
  3. Пропускная способность диска
  4. Загрузка в систему.
  5. Операционная система.
  6. Параметры компиляции.
  7. Параметры настройки соответствующей системы сравниваются как с ОС, так и с БД.
  8. Размер данных.
...