如何使用clock()函数获取运行时间 #包括 #包括 int main() { 时间-开始时间,结束时间; 而(1) { 开始时间=时钟(); /* 一些加工 */ endTime=clock(); 间隙=(int)((结束时间-开始时间)/(时钟每秒)); printf(“开始时间:%d,结束时间:%d\n”,(int)开始时间,(int)结束时间); printf(“运行时间:%d秒”,间隙); } }

如何使用clock()函数获取运行时间 #包括 #包括 int main() { 时间-开始时间,结束时间; 而(1) { 开始时间=时钟(); /* 一些加工 */ endTime=clock(); 间隙=(int)((结束时间-开始时间)/(时钟每秒)); printf(“开始时间:%d,结束时间:%d\n”,(int)开始时间,(int)结束时间); printf(“运行时间:%d秒”,间隙); } },c,C,输出: 开始时间:1962年,结束时间:19247 运行时间:0秒 我发现这是因为Ubuntu上每秒的时钟数是1000000。 我可以像在Windows中一样将每秒时钟数计算为1000吗?问题是结束时间,开始时间和每秒时钟数都是整数。您需要将至少一个值强制转换为浮点类型。并使用浮点类型作为目标 例如 问题是结束时间、开始时间和每秒时钟都是整数。您需要将至少一个值强制转换为浮点类型。并使用浮点类型作为目标 例如 (我专注于Linux) 先读。然后读,,(注释很重要) 时间有几种不同的概念:实时、已

输出:
开始时间:1962年,结束时间:19247
运行时间:0秒

我发现这是因为Ubuntu上每秒的时钟数是1000000。

我可以像在Windows中一样将每秒时钟数计算为1000吗?

问题是
结束时间
开始时间
每秒时钟数
都是整数。您需要将至少一个值强制转换为浮点类型。并使用浮点类型作为目标

例如


问题是
结束时间
开始时间
每秒时钟
都是整数。您需要将至少一个值强制转换为浮点类型。并使用浮点类型作为目标

例如

(我专注于Linux)

先读。然后读,,(注释很重要)

时间有几种不同的概念:实时、已用、进程CPU、线程CPU。你需要选择正确的一个。请注意,有些函数以秒、微秒或纳秒为单位返回时间(使用一些
struct
)。您可能希望将它们转换为
双精度值
(有时会失去精度)。请注意,实际的挂钟时间可能会以某种意外(非单调)的方式发生变化(例如…)

在一些便宜的系统(特别是32位嵌入式Linux系统)上,请注意

我可以像在Windows中一样将每秒时钟数计算为1000吗

每秒时钟数
在语义上是一个不能更改的常量(即使在Windows上)。它是由系统提供的(在POSIX上需要1000000,因此在Linux上
clock()
提供进程CPUµs)。另请参见
\u SC\u CLK\u TCK
(与相关)。

(我的重点是Linux)

先读。然后读,,(注释很重要)

时间有几种不同的概念:实时、已用、进程CPU、线程CPU。你需要选择正确的一个。请注意,有些函数以秒、微秒或纳秒为单位返回时间(使用一些
struct
)。您可能希望将它们转换为
双精度值
(有时会失去精度)。请注意,实际的挂钟时间可能会以某种意外(非单调)的方式发生变化(例如…)

在一些便宜的系统(特别是32位嵌入式Linux系统)上,请注意

我可以像在Windows中一样将每秒时钟数计算为1000吗


每秒时钟数
在语义上是一个不能更改的常量(即使在Windows上)。它是由系统提供的(在POSIX上需要1000000,因此在Linux上
clock()
提供进程CPUµs)。另请参见
\u SC\u CLK\u TCK
(与相关)。

您无法“计算”每秒的时钟。这是必然的。如果执行时间小于0.1秒,您应该确定要输出什么。顺便说一句,
clock
的语义在Windows上是非标准的,因此,如果您想要可移植的结果,您不应该使用此函数。您阅读了吗?对于Linux,您应该这样做
clock()
返回
clock\t
time\t
。您不能“计算”每秒的时钟。这是必然的。如果执行时间小于0.1秒,您应该确定要输出什么。顺便说一句,
clock
的语义在Windows上是非标准的,因此,如果您想要可移植的结果,您不应该使用此函数。您阅读了吗?对于Linux,您应该这样做
clock()
返回
clock\t
time\t
#include <stdio.h>
#include <time.h>
int main()
{
  time_t startTime, endTime;
  while(1)
  {
    startTime = clock();
    /*
       Some processing
    */
    endTime = clock();
    gap = (int)((endTime - startTime) / (CLOCKS_PER_SEC));
    printf("StartTime: %d, EndTime: %d\n", (int)startTime, (int)endTime);
    printf("RunningTime: %d sec", gap);
  }
}
double gap = (double) (endTime - startTime) / CLOCKS_PER_SEC;
printf("RunningTime: %f sec", gap);