【发布时间】:2019-07-24 11:32:50
【问题描述】:
在处理定点 DSP 代码时使用分析器会有些困惑。
当我在以下代码上运行 gprof 时:
main()
{
...
g_apply( &g_mono, in_mono );
g_apply( &g_stereo, in_stereo );
...
}
我得到(自循环、子循环、函数名):
16943.80, 4760.06 g_apply
但我想看到单声道和立体声的单独循环,所以我这样做了:
void g_apply_mono(g* g_mono, in* in_mono)
{
g_apply( g_mono, in_mono );
}
void g_apply_stereo(g* g_stereo, in* in_stereo)
{
g_apply( g_stereo, in_stereo );
}
main()
{
...
g_apply_mono ( &g_mono , in_mono );
g_apply_stereo( &g_stereo, in_stereo );
...
}
但是,分析器为g_apply_mono() 和g_apply_stereo() 提供完全相同的周期!
12.03 10851.93 g616_apply_mono
12.03 10851.93 g616_apply_stereo
我做错了什么?有什么东西让分析器感到困惑吗?
立体声显然比单声道慢得多,即需要更多的周期。
以上两种情况的输出都是一样的,所以代码是OK的。
【问题讨论】:
-
您可以尝试在其中一种方法中执行nothing,然后重试。看看时间是否相同。
-
试过了,不,时间不一样了。