gpt4 book ai didi

c - 以纳秒为单位的执行时间和相关问题

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

我正在使用以下代码计算以毫秒为单位的执行时间。

struct timespec tp;
if (clock_gettime (CLOCK_REALTIME, &tp) == 0)
return ((tp.tv_sec * 1000000000) + tp.tv_nsec);
else
return ;

你能告诉我这是否正确吗?我们将此函数命名为 comptime_nano()。

现在,我在 main() 中编写以下代码来检查以下操作的执行时间。

 unsigned long int a, b, s1, s3;
a = (unsigned long int)(1) << 63;
b = (unsigned long int)(1) << 63;
btime = comptime_nano();
s1 = b >> 30;
atime = comptime_nano();
printf ("Time =%ld for %lu\n", (atime - btime), s1);
btime = comptime_nano();
s3 = a >> 1;
atime = comptime_nano();
printf ("Time =%ld for %lu\n", (atime - btime), s3);

令我惊讶的是,第一个操作所花的时间大约是第二个操作的 4 倍。同样,如果我更改这些操作的相对顺序,则相应的时间会发生巨大变化。

请评论...

最佳答案

clock_gettime 对于这种测量来说不够准确。如果您需要测量这样的操作,请在比较之前循环执行几千次(或几百万次)操作。上面的两个操作应该花费相同的时间,但是示例代码中的第二个操作没有加载 abs1s3 进入处理器的缓存。

还有,这是怎么回事?

struct timespec tp;
if (clock_gettime (CLOCK_REALTIME, &tp) == 0)
return ((tp.tv_sec * 1000000000) + tp.tv_nsec);
else
return ;

如果函数返回void,则第一个返回是非法的,如果不返回void,则第二个是非法的....

编辑:1000000000 也溢出了 int 的范围。

关于c - 以纳秒为单位的执行时间和相关问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2920665/

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