我是Java的新手,而且我正在编写一款安卓游戏 - 而且在紧凑的循环中有一行代码让我感到烦恼。
targetBlocksRemain += letterArray[column][row].isTargetBlock() ? 1 : 0;
我觉得必须可以在没有条件语句的情况下编写这个,因此没有潜在的分支预测性能。
我最终会优化紧密循环,所以从长远来看我并没有大量关注,但知道是否有解决类似情况的方法会很好。
修改 只是为了澄清 - 这是一个伪理论问题 - 我可以做很多其他事情来改进这一点,例如将isTargetBlock存储为int。我对其他建议并不感兴趣,只是想知道是否有办法解决这个问题。
编辑2 希望看看Dalvik VM正在做什么,以确定它如何处理这个问题。
答案 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());