我正在优化软件并希望衡量性能。所以我目前正在使用OVP(开放虚拟平台)模拟ARM平台,我将统计数据作为模拟时间和模拟指令。
我的问题是,为什么每次运行软件时模拟指令都不同(不同,但非常接近)?它应该每次都不一样吗?是不是这样,我用C编写的软件将编译成ARM汇编程序指令,每次运行软件时,模拟指令将运行这些ARM汇编程序指令的次数?它应该每次都一样吗?
我该如何衡量表现?取10个模拟指令样本并得到平均值?
答案 0 :(得分:4)
根据我在真实(非模拟)ARM中的经验,如果我对代码的一部分采用循环计数,循环次数会有所不同,这是因为:
由于所有这些,采用平均值(加上一些其他统计指标)实际上是实际硬件和真实操作系统的唯一实用方法。在一个好的模拟器中,这些因素中的一些或可能被消除。
在某些真实芯片上(或者如果模拟器支持),ARM Performance Monitoring Unit可能很有用。
如果您正在为Cortex A8编码this是一个很酷的在线周期计数器,可以真正帮助您从代码中挤出更多性能。