我正在努力熟悉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();
答案 0 :(得分:2)
将您的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();