java - Android CPU : double, 整数我如何计算有关系吗?在特定情况下什么更快?

标签 java android performance integer double

我正在开发一款 Android 游戏。目前我正在编写代码来计算两个对象之间的最佳路径,使用 A* 算法。在算法内部,我使用 double 来计算所有内容。

在我的计算机上运行耗时算法时,整数和 double 计算之间的时间差几乎为零(可能只有几纳秒)。

问题一:

Android 手机也能看到这种行为吗?我知道我的计算机有多个 ALU,一个用于整数,一个用于浮点等。但是电话呢?就硬件而言,Android 手机可能会大不相同。我只有两部测试手机,但今天市场上有数百部手机,这意味着在我的两部手机上运行测试不会给我可靠的数据,至少我是这么认为的。

问题二:

对于我的游戏来说,如果我切换到整数并不重要,计算出的路线可能不太完美,但这并不困扰我。那么值得切换到整数吗?或者切换到整数会破坏算法吗?有没有人有这方面的经验?

最佳答案

根据一般经验,整数运算比浮点运算更快,因为它更易于实现。 (对于 float ,硬件必须同时处理尾数和指数部分,而且(据我所知)它不能并行处理。)

但是,性能比会因硬件实现而异,很难做出比猜测更好的预测。 (首先,这取决于营销策略和性能与电池生命周期的权衡。)


但老实说,我会更多地关注整数和 float 中的哪一个最适合您的游戏算法。如果他们需要其中一个而您使用另一个,那么您将面临很多痛苦(不必要的编码、测试、错误修复等)。

Or do you guys think switching to integers will break the algorithm?

可以的。这也可能使它们变得更加复杂。这完全取决于算法的性质。当然,您需要进行大量的重新编码和重新测试。

就个人而言,即使在我尝试分析和调整性能热点之后,如果游戏只是太慢,我只会考虑这样做。并且只有在我准备好承担重新编码工作可能没有任何好处的风险时,我才会这样做......或者更糟。

关于java - Android CPU : double, 整数我如何计算有关系吗?在特定情况下什么更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9516241/

相关文章:

c# - 如何获取 Android 应用程序当前使用的堆大小?

asp.net - Umbraco 版本 5 出了什么问题?

ruby-on-rails - Travis-CI 与 Debian 的测试速度

java - Android 上的性能测量

java - 为什么这个 lambda 可以在这里使用,其中需要 Arrays.sort() 中的比较器

安卓 : how to show other apps widget in my activity

java - 在android中安排mediaplayer的执行

java - 什么时候使用 Android AlarmManager?

java - SmartGWT 服务器文件浏览器

java - 是否允许在非 EDT 线程中加载 Swing 类?