大家好,我的 JNI 库有问题。相同代码的执行时间从一部手机更改为另一部手机。我以为这只是因为我们在旧手机上进行测试,但最近我在 htc legend 上运行,所有 jni 代码都很慢......
我运行分析器,它确实是一个昼夜差异:在某些手机上,jni 功能需要 15% 到 20%,而在其他手机上,在相同条件下需要 40% 和 50%...
有人有解释吗?
大家好,我的 JNI 库有问题。相同代码的执行时间从一部手机更改为另一部手机。我以为这只是因为我们在旧手机上进行测试,但最近我在 htc legend 上运行,所有 jni 代码都很慢......
我运行分析器,它确实是一个昼夜差异:在某些手机上,jni 功能需要 15% 到 20%,而在其他手机上,在相同条件下需要 40% 和 50%...
有人有解释吗?
如果其中一部手机使用 Foryo (2.2) 中添加的 JIT (Just In Time) 编译器,那一部应该比你的旧手机快得多。您是否使用相同的android版本对其进行测试?
除此之外,有些设备在浮点数学方面比其他设备更好。未实现 FPU 的设备将模拟浮点运算。在这里您可以找到一篇不错的博客文章:http ://www.badlogicgames.com/wordpress/?p=71 。
关于如何使用定点算术实现浮点系统有很多来源:http ://en.wikipedia.org/wiki/Fixed-point_arithmetic
处理器当然不是平等的。它们有不同的提要、速度、缓存等。显而易见的解释是处理器。
此外,系统范围的事情可能会影响处理 - 例如,如果您正在使用 JNI 处理相机拍摄的图像,则图像的大小可能是特定于设备的。
此外,您必须检查您正在测量线程时间和挂钟时间;如果查看与 Java 代码部分相关的时间,您可能会看到 Java 中的相对加速(例如 Android 2.2 中的 JIT),而不是 JNI 中的减速。