← 模式
测量执行时间
123456789101112 | #include <chrono> int main() { using clock = std::chrono::steady_clock; clock::time_point start = clock::now(); // 一个耗时的任务... clock::time_point end = clock::now(); clock::duration execution_time = end - start; } |
此模式采用 CC0 公共领域贡献 许可。
要求 c++98 或更新版本。
意图
测量一段代码的执行时间。
描述
我们在第 5 行引入了类型别名 clock
,使其指向 std::chrono::steady_clock
类型。这个类型表示一个单调(总是递增的)时钟。
在我们希望计时的任务之前和之后(分别在第 7 行和第 9 行),我们调用静态成员函数 clock::now
,它会返回一个 std::chrono::time_point
,表示该函数被调用时的时间点。通过在第 11 行用 end
时间点减去 start
时间点,我们得到了一个 std::chrono::duration
,它表示这两个时间点之间所经过的时间,也就是我们任务的执行时间。
我们可以通过调用 std::chrono::duration
的 count
成员函数来获取它的值。std::chrono::duration
的单位由它所来源的时钟决定,但可以通过 std::chrono::duration_cast
函数将其转换为具有不同单位的另一个 std::duration
(或者如果单位可以精确整除,则可以隐式转换)。