gpt4 book ai didi

时钟不准确

转载 作者:行者123 更新时间:2023-11-30 17:31:14 25 4
gpt4 key购买 nike

我将 unistd.hclock() 的值分配给两个 int 类型,如下所示:

int start_time = clock();
for (i = 0; i < 1000000; i++) {
printf("%d\n", i+1);
}
int end_time = clock();

但是,当我打印它们的值时,实际耗时与显示的时间不同。 POSIX 标准声明,假设时钟周期为一微秒,CLOCKS_PER_SEC 必须等于一百万。时钟是否没有达到标准预期的速度,或者我的循环是否导致计算出现一些奇怪的情况?

我试图以类似的方式测量不同操作的速度,不准确的时钟毁了我的实验。

最佳答案

It takes several seconds to print from 1 to 1,000,000. The value assigned to end_time is usually around 900,000, which in microseconds

你的处理器速度很快。你的 I/O 并没有那么多。

当您的代码执行时,您的处理器将使用硬件获取时间并将其分配给start_time。然后,它将执行循环并将 100 万行放入输出缓冲区中。将内容放入输出缓冲区并不意味着处理器已完成显示它们。

这就是为什么您用不到一秒的时间来完成该过程,但要花几秒钟才能看到输出。

编辑:只是为了澄清一下,似乎短语“将内容放入输出缓冲区并不意味着处理器已完成显示它们”引起了困惑。这是从执行过程的角度来写的,并不意味着处理器将所有输出一次性放入输出缓冲区。

实际发生的情况(如 n.m. 所指出的)是这样的:clock() 实际上返回处理时间,而不是一天中的时间。而且由于输出缓冲区很小,并且处理器在刷新缓冲区后必须等待很长时间,因此处理时间将明显小于实际执行时间。因此,从流程的角度来看,执行速度似乎很快,但输出的显示速度却非常慢。

关于时钟不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24728569/

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