我正在对 Windows 移动设备上的代码性能进行一些基准测试,并注意到某些算法在某些主机上的性能明显更好,而在另一些主机上则明显更差。当然,考虑到时钟速度的差异。
供参考的统计数据(所有结果均由同一个二进制文件生成,由面向 ARMv4 的 Visual Studio 2005 编译):
英特尔 XScale PXA270
- 算法 A:22642 毫秒
- 算法 B:29271 毫秒
ARM1136EJ-S 内核(嵌入在 MSM7201A 芯片中)
- 算法 A:24874 毫秒
- 算法 B:29504 毫秒
ARM926EJ-S 内核(嵌入在 OMAP 850 芯片中)
- 算法 A:70215 毫秒
- 算法 B:31652 毫秒(!)
我检查了浮点作为可能的原因,虽然算法 B 确实使用了浮点代码,但它没有从内部循环中使用它,而且似乎没有一个内核具有 FPU。
所以我的问题是,什么机制可能导致这种差异,最好是关于如何修复/避免有问题的瓶颈的建议。
提前致谢。