我的音频 DSP 算法处理输入声音文件(45 秒,16 kHz,单声道)。模拟完成后,gprof
分析器告诉我:
Cycles: total = 6846310893.
我的目标 DSP 处理器是 600 MHz,每个周期执行 1 条指令,这意味着它是 600“MIPS”(每秒数百万条指令)。
这个算法(实时运行)将从这 600 MIPS 中取出多少?这完全可以使用上述数据计算吗?
我的音频 DSP 算法处理输入声音文件(45 秒,16 kHz,单声道)。模拟完成后,gprof
分析器告诉我:
Cycles: total = 6846310893.
我的目标 DSP 处理器是 600 MHz,每个周期执行 1 条指令,这意味着它是 600“MIPS”(每秒数百万条指令)。
这个算法(实时运行)将从这 600 MIPS 中取出多少?这完全可以使用上述数据计算吗?
天真的方法是做6 846 310 893 / 45 = 152 140 242 ~ 152 MIPS
. 这假设每条指令在您的处理器上恰好占用一个周期。
另一种方法是使用诸如massif之类的工具,并使用已知长度的文件(在您的情况下为 45 秒)估计 MIPS。
valgrind --tool=massif --stacks=yes --detailed-freq=100 --massif-out-file=out.msf your_binary
ms_print --threshold=100 out.msf
然后在底部你会得到类似的东西:
--------------------------------------------------------------------------------
n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B)
--------------------------------------------------------------------------------
81 721,831 600 0 0 600
82 728,199 448 0 0 448
取 的最终值time(i)
,除以秒数再除以. 结果应该是您的近似 MIPS。