【发布时间】:2013-12-30 09:17:03
【问题描述】:
我必须根据每秒解码的帧数来衡量解码器的性能。即计算 FPS。
下面是我的代码 sn-p 的样子:
//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,根据我搜索的内容,这是一个浮点异常,也称为 positive infinity,当我们尝试将一个正数除以零。所以我的问题是为什么将 totTime=start-stop; 视为 0 ?其次,如果不是clock(),那么我如何获得decode函数所花费的时间。
任何与此相关的建议都会非常有帮助。提前致谢。
【问题讨论】:
-
您的“正常”时间(不是 FPS)是否非常接近于零?计算机速度很快,
clock的分辨率相当低(在我的系统上为 1 毫秒)。此外,肯定会有很多抖动(磁盘访问、鼠标移动等)。尝试运行解码程序 1000 次甚至更多次。 -
@Jongware:感谢您的评论。那么如果它接近于零,那么是否有任何其他机制来检查执行函数所花费的时间?
-
这将是“尝试运行解码例程 1000 次甚至更多次”部分。
-
但我需要计算视频中每一帧的解码时间。
-
好的,所以您不是在寻找“分析”,而是在寻找“实时”解决方案。这有帮助吗? stackoverflow.com/questions/6749621/…
标签: c clock performance-testing