Как разделить время (хроно) на заданное значение - PullRequest
0 голосов
/ 30 ноября 2018

Я работаю над знакомством с Chrono для оценки производительности.У меня есть глобальная переменная, в которой он собирает время вставки слов из файла в вектор строк.Если у меня вставлено n строк, как мне разделить это время на n, чтобы получить среднее время и преобразовать его в секунды, микросекунды, миллисекунды?Я нашел, как разделить хронографическое время на другое хроно, но не могу найти, как разделить на заданное число n.Вот что я пытался сделать:

//global var
auto InsertionTimerChainingHT = std::chrono::system_clock::now();
//... function declerations
// inside function where I insert strings to vector
auto total = std::chrono::system_clock::now();
for (auto it = DataArray.begin(); it != DataArray.end(); it++)
{
    auto start = std::chrono::system_clock::now();
    ChainingHT.insert(it->data());
    auto stop = std::chrono::system_clock::now();

    total += (stop - start);


}
InsertionTimerChainingHT = total;
// I attempted to do the following
InsertionTimerChainingHT /= 1853;
InsertionTimerChainingHT = (InsertionTimerChainingHT / 1853).count();

1 Ответ

0 голосов
/ 30 ноября 2018

Храните total как chrono::duration, а не chrono::time_point.Возвращение system_clock::now() - это time_point (мгновение во времени).Разница между stop и start составляет duration (например, 3 микросекунды).

Например:

auto total = std::chrono::system_clock::duration{0};  // zero system_clock ticks

duration можно разделить на скаляр, в результате чегов duration:

total /= DataArray.size();
...