不良结果:时间(NULL)和时钟()

发布于 2024-11-06 02:43:35 字数 693 浏览 4 评论 0原文

#import <stdio.h>
#import <time.h>

int main (void) {

    printf("Clock ticks per second: %d\n", CLOCKS_PER_SEC);
    double check = clock();
    int timex = time(NULL);

    for (int x = 0; x <= 500000; x++) {

        printf(".");

    }
    puts("\n");

    printf("Total Time by Clock: %7.7f\n", (clock() - check) / CLOCKS_PER_SEC );
    printf("Total Time by Time: %d\n", time(NULL) - timex);

    getchar();
}

当我执行上面的代码时,我得到的结果如下:

按时钟列出的总时间:0.0108240

按时间列出的总时间:12

我希望 Clock() 表示尽可能接近时间的数字。

上面给出的总时间是在 MacBook 上完成的,但是,代码在我的笔记本电脑(Windows)上运行得很好。

CLOCKS_PER_SECOND 宏在 PC 上返回 1000,在 MAC 上返回 1,000,000。

#import <stdio.h>
#import <time.h>

int main (void) {

    printf("Clock ticks per second: %d\n", CLOCKS_PER_SEC);
    double check = clock();
    int timex = time(NULL);

    for (int x = 0; x <= 500000; x++) {

        printf(".");

    }
    puts("\n");

    printf("Total Time by Clock: %7.7f\n", (clock() - check) / CLOCKS_PER_SEC );
    printf("Total Time by Time: %d\n", time(NULL) - timex);

    getchar();
}

When I execute the above code I get results like:

Total Time by Clock: 0.0108240

Total Time by Time: 12

I would like to have clock() represent a number as close to as possible as time.

The total time presented above was done on a macbook, however, the code works excellent on my laptop (windows).

The CLOCKS_PER_SECOND macro returns 1000 on the PC, 1,000,000 on the MAC.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

对风讲故事 2024-11-13 02:43:35

Windows 上的 Clock() 返回挂钟时间。 *nixes 上的 Clock() 返回程序所花费的 CPU 时间,这不会很多,在这里执行 I/O 时可能会被阻塞。

clock() on windows returns the wall clock time. clock() on *nixes return the CPU time your program has spent, which is not going to be a lot, you're likely blocked when doing I/O here.

昨迟人 2024-11-13 02:43:35

控制台的 printf() 为每个函数调用进行系统调用,并且在控制台重绘等中阻塞的时间不计入处理时间。

在那里进行一些繁重的计算。

for (long int x = 0; x <= 5000000000; x++) {
    sqrt(2.9999);
}

printf() to console makes system call for each functon call, and time spent blocked in console redrawing, etc. do not count for process time.

Make some heavy calculations there.

for (long int x = 0; x <= 5000000000; x++) {
    sqrt(2.9999);
}
辞取 2024-11-13 02:43:35

time() 返回一个time_t。当您将其分配给 int 时,您可能会丢失信息。如果您始终使用 time_t 会发生什么?

int main(void) {
    time_t timex = time(0);
    /* ... */
    printf("%d", (int)(time(0) - timex));
}

time() returns a time_t. When you assign that to an int it is possible that you lose information. What happens if you use time_t throughout?

int main(void) {
    time_t timex = time(0);
    /* ... */
    printf("%d", (int)(time(0) - timex));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文