gpt4 book ai didi

在C中计算每秒的平均值

转载 作者:行者123 更新时间:2023-12-04 10:04:06 25 4
gpt4 key购买 nike

我有一个递增的整数值,想求出该整数的每秒平均值。我知道 C 中不存在计时器,除非你做一些特定且复杂的事情 [我是 C 的新手] 有没有更简单的方法来做到这一点?最好在进行计算时重置该值,以免内存中有如此大的数字,因为此应用程序将运行很长时间。

最佳答案

我认为您会想要包含 time.h,并使用它的一些函数和结构(这实际上是学习 C 基础知识的不错方式)。有一个解释和几个例子here .

如果您需要亚秒级精度,我建议您使用 clock_gettime() ,这将为您提供纳秒级分辨率。

这是一个例子:

#include <stdio.h>
#include <time.h>

struct timespec diff(struct timespec start, struct timespec end);

int main()
{
struct timespec time1, time2, timeDiff;
int temp, i;

// Get the start time
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);

// Do some work
for (i = 0; i< 242000000; i++)
temp+=temp;

// Get the end time
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);

// Calculate the difference
timeDiff = diff(time1,time2);

printf("%d.%d\n", timeDiff.tv_sec, timeDiff.tv_nsec);
return 0;
}

struct timespec diff(struct timespec start, struct timespec end)
{
struct timespec temp;
if ((end.tv_nsec-start.tv_nsec)<0) {
temp.tv_sec = end.tv_sec-start.tv_sec-1;
temp.tv_nsec = 1000000000+end.tv_nsec-start.tv_nsec;
} else {
temp.tv_sec = end.tv_sec-start.tv_sec;
temp.tv_nsec = end.tv_nsec-start.tv_nsec;
}
return temp;
}

你需要用类似的东西编译:

gcc -o timetest timetest.c -lrt

命令的 -lrt 部分告诉 C 链接器链接到实时库,其中包含 clock_gettime() 的定义。

关于在C中计算每秒的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13741411/

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