非条件布尔到int转换java - 微优化

时间:2014-03-06 09:49:35

标签: java android optimization micro-optimization

我是Java的新手,而且我正在编写一款安卓游戏 - 而且在紧凑的循环中有一行代码让我感到烦恼。

targetBlocksRemain += letterArray[column][row].isTargetBlock() ? 1 : 0;

我觉得必须可以在没有条件语句的情况下编写这个,因此没有潜在的分支预测性能。

我最终会优化紧密循环,所以从长远来看我并没有大量关注,但知道是否有解决类似情况的方法会很好。

修改 只是为了澄清 - 这是一个伪理论问题 - 我可以做很多其他事情来改进这一点,例如将isTargetBlock存储为int。我对其他建议并不感兴趣,只是想知道是否有办法解决这个问题。

编辑2 希望看看Dalvik VM正在做什么,以确定它如何处理这个问题。

1 个答案:

答案 0 :(得分:-1)

我知道它可能看起来不太好但会避免条件陈述:

在活动中执行此操作:

HashMap<Boolean, Integer> map=new HashMap<Boolean, Integer>();
map.put(false, 0);
map.put(true, 1);

和循环

targetBlocksRemain += map.get(letterArray[column][row].isTargetBlock());