网格转换效率

时间:2014-07-07 03:01:38

标签: java performance

这是交易,我有两个功能,我觉得效率非常低,而且我也确信有更有效的方法来做到这一点。所以" tile"变量是从0到24的int,我需要获得x& y基于那个int。 (tile变量类似于5x5网格中的特定按钮ID)

第一个功能:

if (tile == 0 || tile == 5 || tile == 10 || tile == 15 || tile == 20) x = 0 else if (tile == 1 || tile == 6 || tile == 11 || tile == 16 || tile == 21) x = 1; else if (tile == 2 || tile == 7 || tile == 12 || tile == 17 || tile == 22) x = 2; else if (tile == 3 || tile == 8 || tile == 13 || tile == 18 || tile == 23) x = 3; else x = 4;

第二个功能:

if(tile < 5) y = 0;
else if(tile < 10) y = 1;
else if(tile < 15) y = 2;
else if(tile < 20) y = 3;
else y = 4;

我想我可能已经找到了一种更有效的方式来做第一个,虽然我不能完全确定它是否更有效。

x = tile;
while(x >= 5)
    x -= 5;

最有效的方法是什么?

1 个答案:

答案 0 :(得分:1)

虽然在性能方面这可能是微不足道的,但在可读性方面肯定有更好的方法。

x = (tile % 5); // modulus
y = tile / 5; // division