【发布时间】:2011-12-23 15:35:21
【问题描述】:
我有一个Android application,它使用 NDK 执行大量浮点数学运算。
我刚刚购买了一个新的 Galaxy Nexus。令我惊讶的是,我的应用程序运行速度比它应该运行的要慢得多。我怀疑这是因为大多数设备都在使用硬件加速,而 Galaxy Nexus 没有。如果我执行不需要浮点数学的操作,Galaxy Nexus 会按照我的预期执行。
以下是多款设备的 CPU/GPU 规格和采样时序。我已将统计数据标准化以考虑显示分辨率:
Droid
CPU: TI OMAP 3430 (ARM Cortex-A8 600 MHz underclocked to 550 MHz)
GPU: PowerVR SGX530
Instruction Set: ARMv7
Test Run: 1,980 pixels per second
Galaxy Nexus
CPU: TI OMAP 4460 (ARM Cortex-A9 dual-core 1.2 GHz)
GPU: PowerVR SGX540
Instruction Set: ARMv7
Test Run: 2,253 pixels per second
Droid Incredible
CPU: QSD8650 (Qualcomm Snapdragon 1 GHz)
GPU: Adreno 200
Instruction Set: ARMv7
Test Run: 4,571 pixels per second
我的Application.mk 文件中有这个配置:
APP_ABI := armeabi armeabi-v7a
我没有使用 NDK-r7 重新编译我的代码,但我不明白为什么这会产生如此巨大的差异。知道有什么问题吗?
【问题讨论】:
-
你能量化一下
MUCH slower吗? -
@WarrenFaith 我已经用实际数字更新了问题。
标签: android android-ndk