Android开发者网站上的一个页面提到你应该(引用):“避免使用浮点”(链接:Performance Tips)
在阅读完整篇文章后,似乎有些项目可能有点过时(可能是几年前写的)。
我想知道这个指南今天是否仍然有效,或者使用浮点类型是否真的很糟糕(即使在今天的硬件上也是如此)?
答案 0 :(得分:4)
像ARMv6这样的旧设备没有处理器支持浮点运算。如果您坚持使用Java,那么浮点数的使用将通过仿真来完成,虽然它可以在较旧的设备上运行,但如果您在显示循环中使用浮动或类似的更新20次以上,您的软件将非常慢并且耗电每秒。
ARMv7及更高版本具有浮点运算支持,因此如果您认为您的软件还必须支持旧设备,那么即使定点或整数运算也是首选,它也不是什么大问题。
查看OpenGL /高性能Android应用程序的相关问题: Floating point or fixed-point for Android NDK OpenGL apps?
答案 1 :(得分:2)
恕我直言,避免使用浮点的声明是荒谬的。如果需要浮点数,则需要浮点数。队伍的尽头。你不应该在需要时避免它。因为,你可能会尝试用整数来找到它的方法,但是对于程序员来说,读取/调试代码的计算会更加复杂和清晰。
当你在SO上看到这个华丽的答案时,你会发现浮点运算(FLOPS)仍然非常快。 FLOPS per cycle for sandy-bridge and haswell SSE2/AVX/AVX2。他们说每个周期有多个FLOPS!