我在C中有一个安全库,并尝试使用NDK将其导入我的Android项目。该库依赖于其他三个库:pbc,gmp和openssl。我已经将前两个库构建为静态库,将last one构建为共享库。
我在我的库中定时加密()和decrypt()函数。
在我的笔记本电脑上,它是:
在我的Android设备(Droid 2.2.3)上,它是:
时间仅用于从C库调用这两个函数。 JNI开销非常小。
这是预期的吗?
encrypt()和decrypt()都没有任何IO操作,主要是浮点运算。我编译了armeabi-v7a的代码。
答案 0 :(得分:7)
首先,我会说你很幸运 - 你的端口工作速度只比笔记本电脑版慢8倍。对于基于ARM的平台来说,这是一个非常好的结果。
ARM有几个原因要慢:
您可以尝试以下方法来改善代码的性能:
-mfpu=vfpv3
(或-mfpu=neon
)重新编译所有库。由于FPU寄存器数量增加了一倍,它可以略微提高浮点计算的速度。