最近有个需求,要把产品使用的某款ARM SOC的性能,和X86 桌面CPU性能做对比,从而确定某软件是否有价值移植到性能比较差的ARM SOC上。
具体不细说了,总之,就是做一款类似于安兔兔的跑分工具
现在把实现思路总结一下
一,测试项:
1. CPU性能测试
传统CPU性能测试主要有整点运算和浮点运算
1.1 整点运算
目前采用的算法包括了以下几项:整数排序、CRC校验、huffman压缩。
1.2 浮点运算
关于浮点测试我们采用的算法包括了:圆周率计算、FFT计算。
注意:测试ARM浮点性能时,要注意尽量使用CPU的浮点指令集以及FPU。否则有可能被编译器优化成整形运算ARM 平台上编译时,加 -mfpu=vfp (或-mfpu=neon,对于包含NEON的ARM芯片,NEON一般和VFP公用寄存器) -mfloat-abi=softfp。
使用-mfloat-abi=softfp就能兼容带VFP的硬件以及soft-float的软件实现,运行时的连接器ld.so会在执行浮点运算时对于运算单元的选择,是直接的硬件调用还是库函数调用。
当然,这里也可以直接使用-mfloat-abi=hard,这样就直接使用了VFP的硬件以及指令集。浮点性能最快。
2.RAM测试。
具体不细说了,总之,就是做一款类似于安兔兔的跑分工具
现在把实现思路总结一下
一,测试项:
1. CPU性能测试
传统CPU性能测试主要有整点运算和浮点运算
1.1 整点运算
目前采用的算法包括了以下几项:整数排序、CRC校验、huffman压缩。
1.2 浮点运算
关于浮点测试我们采用的算法包括了:圆周率计算、FFT计算。
注意:测试ARM浮点性能时,要注意尽量使用CPU的浮点指令集以及FPU。否则有可能被编译器优化成整形运算ARM 平台上编译时,加 -mfpu=vfp (或-mfpu=neon,对于包含NEON的ARM芯片,NEON一般和VFP公用寄存器) -mfloat-abi=softfp。
使用-mfloat-abi=softfp就能兼容带VFP的硬件以及soft-float的软件实现,运行时的连接器ld.so会在执行浮点运算时对于运算单元的选择,是直接的硬件调用还是库函数调用。
当然,这里也可以直接使用-mfloat-abi=hard,这样就直接使用了VFP的硬件以及指令集。浮点性能最快。
2.RAM测试。