【发布时间】:2021-12-04 05:11:00
【问题描述】:
我对如何操作从clock_gettime 获得的值的细节有点问题。我想计算一个可执行文件/命令的总运行时间。
我希望以(例如 3.475 秒)的格式打印出实时 我快完成了,但我很确定它不会以我想要的格式返回。我怎么能这样做?
struct timespec tsstart, tsend;
clock_gettime(CLOCK_MONOTONIC, &tsstart);
//execuatble/command executes and finishes
clock_gettime(CLOCK_MONOTONIC, &tsend);
long long realtime = (tsend.tv_sec-tsstart.tv_sec)*1000000LL + tsend.tv_usec-tsstart.tv_usec;
printf("real: %.3lds, ", realtime);
每当我尝试运行它时,在短时间内(即
35273s
如何将输出格式更改为 3d.p。我需要的精度?
【问题讨论】:
-
嗯,标准 C 具有
struct timespec“它保存以秒和 纳秒 为单位指定的间隔 ...”和成员long tv_nsec。好奇的linux使用.tv_usec。 -
使用
long long realtime,我希望"%.3lld",而不是"%.3ld" -
@chux-ReinstateMonica,是的,这也是我发现的一个错误,我把它搞砸了,因为我同时使用 rusage,但是对于这个,它会是
.tv_nsec。 -
@chux-ReinstateMonica 至于
%.3ld是的,有点类型不匹配,但不是问题 -
needshelpwithcoding "little bit of a type mismatch" 意味着您没有在编译时启用所有警告。因此,您没有完全使用第一个可用的有效资产 - 您的编译器。为自己和其他人节省时间,作为一种职业礼貌。
标签: c linux operating-system