gpt4 book ai didi

c++ - 如何解释时钟()?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:51 24 4
gpt4 key购买 nike

在我的 C++ 程序中,我通过 clock() 命令测量 CPU 时间。由于代码是在不同计算机的集群上执行的(运行所有相同的操作系统,但具有不同的硬件配置,即不同的 CPU),我想知道测量实际执行时间。这是我的场景:

据我所知,clock() 给出了自固定日期以来经过的 CPU 时钟滴答数。我通过第二次调用 clock() 并建立差异来测量相对持续时间。

现在 C++ 中的内部 clock() 是什么定义的?如果我有 1.0 GHz 的 CPU A 和 2.0 GHz 的 CPU B,并在它们上运行相同的代码,CPU A 和 B 需要多少个时钟才能完成? clock() 是否对应于“工作完成”?或者它真的是一个“时间”?

编辑:由于未设置 CLOCKS_PER_SEC,我无法使用它来将时钟转换为以秒为单位的运行时间。正如手册所说, CLOCKS_PER_SEC 取决于硬件/架构。这意味着时钟依赖于硬件。所以,我真的需要知道 clock() 给我什么,而不需要任何额外的计算。

最佳答案

clock() 函数应该返回最接近的可能所用 CPU 时间的表示,与时钟无关CPU 的速度。 CPU 的时钟速度可能在哪里干预(但不一定)是在粒度上;更多的然而,时钟的粒度通常取决于一些外部时间来源。 (在遥远的过去,它通常基于电源线频率,粒度为 1/50 或 1/60一秒钟,取决于你在哪里。)

要获得以秒为单位的时间,您可以除以 CLOCKS_PER_SEC。是但是,请注意 clock()CLOCKS_PER_SEC 都是整数值,所以除法是整数。你可能想要在进行除法之前将 1 转换为 double。在过去,CLOCKS_PER_SEC也对应了粒度,但是现代系统似乎只是选择一些大的值(Posix需要 1000000,与粒度无关);这表示clock() 的连续返回值将“跳跃”。

最后,可能值得注意的是,在 VC++ 中,clock() 是坏了,并返回挂钟时间,而不是 CPU 时间。(这可能是历史条件下的;在早期,挂钟时间是唯一可用的,而人们在微软可能认为有代码依赖于它。)

关于c++ - 如何解释时钟()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24991045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com