我正在优化软件,并希望衡量性能.所以,我目前模拟与OVP的ARM平台(开放虚拟平台)和我得到的统计数字仿真时间和仿真的指令.
我的问题是,为什么每次运行软件时模拟指令都不同(不同但非常接近)?它应该每次都不一样吗?难道不是这样的,我用C编写的软件会被编译成ARM汇编指令,每一个软件运行时间,模拟指示将这些ARM汇编指令多少时间运行?每次都应该是一样的吗?
我该如何衡量绩效?取10个模拟指令样本并获得平均值?
根据我在真实(非模拟)ARM 中的经验,如果我对一段代码进行周期计数,周期数将会有所不同,这是因为:
由于所有这些,取平均值(加上一些其他统计测量)实际上是真实硬件和真实操作系统的唯一实用方法。在一个好的模拟器中,其中一些因素可能会被消除。
在某些真实芯片上(或者如果模拟器支持的话),ARM性能监控单元可能很有用。
如果您正在为 Cortex A8 编码,这是一个很酷的在线周期计数器,它可以真正帮助您从代码中获得更多性能。