在我的C++程序中,我通过clock()命令来测量CPU时间。由于代码在不同计算机集群上执行(运行相同的操作系统,但具有不同的硬件配置,即不同的CPU),因此我想了解如何测量实际执行时间。我的情况如下:
据我所知,clock()给出自某个固定日期以来经过的CPU时钟滴答数。我通过再次调用clock()并计算差值来测量相对持续时间。
现在什么定义了C++中的内部clock()?如果我有1.0 GHz和2.0 GHz的两个CPU A和B,并在它们上面运行相同的代码,CPU A和B将需要多少个时钟才能完成工作? clock()是否对应于“工作完成”?还是真正的“时间”?
编辑:由于未设置CLOCKS_PER_SEC,因此我无法将时钟转换为秒的运行时间。正如手册所说,CLOCKS_PER_SEC取决于硬件/架构。这意味着时钟依赖于硬件。因此,我确实需要知道clock()给我什么,没有任何额外的计算。
据我所知,clock()给出自某个固定日期以来经过的CPU时钟滴答数。我通过再次调用clock()并计算差值来测量相对持续时间。
现在什么定义了C++中的内部clock()?如果我有1.0 GHz和2.0 GHz的两个CPU A和B,并在它们上面运行相同的代码,CPU A和B将需要多少个时钟才能完成工作? clock()是否对应于“工作完成”?还是真正的“时间”?
编辑:由于未设置CLOCKS_PER_SEC,因此我无法将时钟转换为秒的运行时间。正如手册所说,CLOCKS_PER_SEC取决于硬件/架构。这意味着时钟依赖于硬件。因此,我确实需要知道clock()给我什么,没有任何额外的计算。
clock()
的差异就越小。当然,假设差异足够大以至于具有显著性(这取决于分辨率)。 - James Kanze