相关疑难解决方法(0)

为多种体系结构生成优化的NDK代码?

我有一些Android的C代码,可以进行大量的低级数字运算.我想知道我应该使用哪些设置(例如我的Android.mk和Application.mk),以便生成的代码可以在所有当前的Android设备上运行,但也可以利用特定芯片组的优化.我正在寻找使用良好的默认Android.mk和Application.mk设置,我想避免使用#ifdef分支丢弃我的C代码.

例如,我知道ARMv7有浮点指令,一些ARMv7芯片支持NEON指令,默认ARM不支持这些指令.是否可以设置标志,以便我可以使用NEON,没有NEON的ARMv7和默认的ARM构建来构建ARMv7?我知道如何做后两者但不是全部3.我对我使用的设置持谨慎态度,因为我认为当前默认设置是最安全的设置以及其他选项有哪些风险.

对于GCC特定的优化,我使用以下标志:

LOCAL_CFLAGS=-ffast-math -O3 -funroll-loops
Run Code Online (Sandbox Code Playgroud)

我检查了所有这三个加速了我的代码.还有其他我可以添加的常见内容吗?

我的另一个提示是将"LOCAL_ARM_MODE:= arm"添加到Android.mk以加快更新的手臂芯片(尽管我对这件事以及旧芯片上发生的事情感到困惑).

c java-native-interface android gcc android-ndk

53
推荐指数
2
解决办法
2万
查看次数

标签 统计

android ×1

android-ndk ×1

c ×1

gcc ×1

java-native-interface ×1