gpt4 book ai didi

c++ - CLOCKS_PER_SEC 是否意味着每台计算机会有不同的时间概念?

转载 作者:行者123 更新时间:2023-11-30 05:04:09 26 4
gpt4 key购买 nike

我们正在运行一些基准测试,我们注意到 function foo这叫function bar并等待响应比 function bar 花费的时间更少 . Foo 驻留在客户端上,它是一个独立的物理机器,而 bar 驻留在服务器上,它是一个独立的机器,并且通过 TCP 服务器进行通信。我们正在使用 <ctime>我们调用clock()像这样。

/*
* resides on client machine
*/
foo ()
{
clock_t start,stop;
start = clock();
/*
* Blocking TCP call to bar() on server
* Uses callback functions
*/
stop = clock();
std::cout<<stop-start;
}
/*
* Function on server which executes some could and returns
* it's run time to the client machine
*/
bar ()
{
clock_t start,stop;
start = clock();
/*connect to international space station and back*/
stop = clock();
std::cout<<stop-start;
}
foo();
bar();
foo() - bar();

我们得到的输出是这样的

100000
200000
-100000

我们怀疑问题在于一个 CPU 的时间感比另一个更快,从而导致了这种不匹配。获得有意义的时间指标的最佳方式是什么(即基于人类时间,而不是抽象的 CPU 速度)。

最佳答案

您很可能将苹果与橙子进行比较。无法保证您的两台机器对 clock() 使用相同的分辨率.也许更有用的是确保您的计时数字采用一致的单位,例如秒。

std::cout << (stop-start)/CLOCKS_PER_SEC;

或者,您可能想尝试使用现代 C++ 和 <chrono>

using std::chrono;
auto start = high_resolution_clock::now();
...
auto stop = high_resolution_clock::now();
std::cout << duration_cast< duration<float> >(stop-start).count()
<< " seconds" << std::endl;

(尽管值得注意的是 high_resolution_clock 可以实现为 system_clocksteady_clock 是专门为计时而设计的,例如您正在尝试做的事情。可能还有分辨率更高的非可移植解决方案特定于硬件/操作系统。)

关于c++ - CLOCKS_PER_SEC 是否意味着每台计算机会有不同的时间概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49060020/

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