C 执行函数所需的时间显示为1.#INF00
我必须以每秒解码的帧数来衡量解码器的性能。i、 e.计算FPS 下面是我的代码片段的外观: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
//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循环所花费的时间,而不是计算每次迭代的时间。即使做一些复杂的数学运算,你也无法得到更精确的时间。