1

是否有任何其他针对数学霓虹灯优化的免费矢量库?我想在我的代码中利用霓虹灯,我有很多对象,我正在做很多简单的向量物理数学,比如添加向量、相乘、点它们,这些是 3d 向量,但如果我能做很多更快的 2d 也应该没问题,问题是,是否值得使用霓虹灯?例如让我们取 100000 个点,我需要计算它们的运动、碰撞等。我目前正在使用我自己的数学,它基于内联函数,可以说我也想使用我假设的带有矩阵的霓虹灯库,目前我我正在为此使用 glm,它做得很好,但它会更快吗?在我的情况下,ndk 中 arm-abi 和 arm7-abi 之间的速度优势约为 30%,neon 可以更快,或者我的代码在编译时被转换为 neon 吗?

4

3 回答 3

2

您可以检查eigen。它有特殊的代码,当霓虹灯指令支持被激活时它被激活。

于 2011-08-04T10:35:21.747 回答
0

就像其他人提到的那样,您应该研究 Eigen,它可能对您来说已经足够好了。但是如果你想要完整的性能(比 30% 的增益好得多,更像是 300% 的增益),你应该自己使用 NEON 代码,并确保你的整个内部循环完全是用 NEON 编写的(不是任何 CPU 或 VFP 代码)。

如果您只是 NEON 优化循环的一部分而不是整个循环,您将受到严重惩罚,因此 NEON 代码可能只比常规 C 代码快 30% 甚至可能更慢。但是一个完整的 NEON 循环通常可以为您提供 300% - 2000% 的加速!

如果您正在为 ARM Cortex-A9 进行开发,那么 NEON C Intrinsics 应该足够好,但对于 ARM Cortex-A8 设备,您通常需要 NEON 汇编代码才能获得全部性能。我在“ http://www.shervinemami.info/armAssembly.html ”上提供了有关如何使用 NEON 优化整个循环的更多信息

于 2012-11-18T13:05:13.700 回答
-3

如果目标架构支持,即为 armeabi-v7a 编译代码,则为 NEON 编译代码。为此,只需armeabi-v7a在应用的 Application.mk 文件中添加目标列表即可。

于 2011-07-30T23:22:47.157 回答