Пример бенчмарка 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?

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


person Exa    schedule 06.09.2010    source источник
comment
Возможно ли, что другие факторы могут объяснить разницу в результатах? например скорость процессора, скорость жесткого диска и т.д.   -  person Ferruccio    schedule 06.09.2010
comment
Да, я не знаю, почему я не подумал об этом раньше...   -  person Exa    schedule 07.09.2010


Ответы (1)


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

  1. Процессор.
  2. объем памяти
  3. Пропускная способность диска
  4. Нагрузка на систему.
  5. Операционная система.
  6. Параметры компиляции.
  7. Параметры настройки соответствующей системы тестируются как для ОС, так и для БД.
  8. Размер данных.
person aeh    schedule 06.09.2010
comment
Как уже упоминалось выше, я не знаю, почему я не подумал об этом раньше. Я пересмотрю свою стратегию тестирования и проверю на разных системах. Спасибо за совет :) - person Exa; 07.09.2010