gpt4 book ai didi

在 C 中计算时间跨度

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:05 26 4
gpt4 key购买 nike

我会很简短:

我想在 C 中测量时间跨度,以便在套接字中发送这种小东西:

sendto (s, buffer, sizeof (buffer), 0, (struct sockaddr *) &peer, peerlen);

我目前正在这样做:

clock_t cBegin = (double)clock () * CLOCKS_PER_SEC;
sendto (s, buffer, sizeof (buffer), 0, (struct sockaddr *) &peer, peerlen);
clock_t cEnd = (double) clock() * CLOCKS_PER_SEC;

elapTicks = cEnd - cBegin;
elapMilli = elapTicks/1000;

printf ("Milisegundos: %lf, %lf\n", cBegin, cEnd);

但是我的 printf 总是 0.000000。我应该如何进行?

提前致谢!

最佳答案

在 POSIX-ish 系统上,使用 gettimeofday()clock_gettime() 代替。

clock() 函数只告诉您使用了多少 CPU 时间。如果您的代码大部分时间都在休眠,等待某事发生,它将使用很少的 CPU。

但是,sendto() 只将您的数据报传递到网络层。它不会等待远程系统接收它。如果您想计时需要多长时间,则需要等待回复。如果这不是您想要的,另一种选择是创建一个循环,并计算发出许多 sendto() 调用所需的时间。但是,这很可能会产生与将数兆字节的数据传递到网络堆栈的效果相混淆的结果(在 UDP 的情况下,不会合并连续的写入)。

关于在 C 中计算时间跨度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343110/

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