C 执行函数所需的时间显示为1.#INF00

C 执行函数所需的时间显示为1.#INF00,c,clock,performance-testing,C,Clock,Performance Testing,我必须以每秒解码的帧数来衡量解码器的性能。i、 e.计算FPS 下面是我的代码片段的外观: //global variables clock_t start,stop; double totTime, FPS; main() { while(End_of_file) { start=clock(); //Decode function is called here stop=clock(); totTime=stop-star

我必须以每秒解码的帧数来衡量解码器的性能。i、 e.计算FPS

下面是我的代码片段的外观:

//global variables
clock_t start,stop;
double totTime, FPS;


main()
{
   while(End_of_file)
   {
      start=clock();

      //Decode function is called here

      stop=clock();

      totTime=stop-start;

      FPS=1/(totTime/CLOCKS_PER_SEC);

      printf("\n %lf fps\n",FPS);
   }
}
printf语句有时会打印正确的值,但有时它会给出一个值
1.#INF00
,根据我搜索的结果,它是一个浮点异常,也称为
正无穷
,当我们试图将一个正数除以零时会发生这种异常。所以我的问题是为什么需要
totTime=start-stop是否被视为0?其次,如果不是clock(),那么如何获取decode函数所用的时间


任何与此相关的建议都会非常有用。提前感谢。

正确的宏是
每秒时钟数
,而不是
每秒时钟数


另外,您可以使用
clock()
,而不是使用
clock\u gettime()
,因为您只需要时间。

您的“正常”时间(不是FPS)是否非常接近零?计算机速度很快,
时钟的分辨率相当低(在我的系统中为1毫秒)。此外,肯定会有很多抖动(磁盘访问、鼠标移动等)。尝试运行解码例程1000次甚至更多次。@Jongware:谢谢您的评论。因此,如果它接近于零,那么是否有其他机制来检查执行函数所需的时间?这将是“尝试运行解码例程1000次或更多次”部分。但我需要计算视频中每帧运行解码所需的时间。好的,那么您不是在寻找“分析”,而是一个“实时”解决方案。这有用吗?对不起,那是打字错误。否则我会出现编译错误。对不起,在windows平台上工作。clock_gettime()在linux中。您的代码占用大量时间吗?我的意思是,如果你在代码前后添加printf,你能看得慢一点还是快一点?我认为你应该试着计算整个while循环所花费的时间,而不是计算每次迭代的时间。即使做一些复杂的数学运算,你也无法得到更精确的时间。