使用FloatMath还是Math和cast?
在 Android API 的最新更新中,FloatMath
标有以下 lint 警告:
在较旧版本的Android中,出于性能原因,建议使用android.util.FloatMath在浮点数上运行。然而,在现代硬件上,双精度与float一样快(尽管它们占用更多内存),并且在最新版本的Android中,由于JIT优化java.lang.Math的方式,FloatMath实际上比使用java.lang.Math慢。因此,如果您只针对Froyo及以上版本,则应使用Math而不是FloatMath。
这里还提到,在最近的硬件上,双倍和浮点在速度上是相等的。
我正在我正在使用的应用程序中使用一些三角数学(针对Froyo及以上),但不需要高精度,所以我一直在使用浮点数,到目前为止,没有必要切换到双精度。
但是,“使用超过”-建议并没有说明如果浮点数是所需的结果,则使用哪一个。FloatMath
Math
FloatMath
因此,简而言之;哪一个更可取?
float foo = FloatMath.sin(bar);
或
float foo = (float) Math.sin(bar);
顺便说一句,我只有一个Froyo设备,所以我不能自己做任何适当的基准测试。
从API级别22开始,FloatMath类已被弃用,取而代之的是常规的数学类。