最有效的表演方法&&?

时间:2012-03-13 14:49:00

标签: java flash boolean overhead performance

我有一个常见的情况,你有两个变量(xSpeed和ySpeed),我想在它们低于minSpeed时独立设置为零,并在它们都为零时退出。

最有效的方法是什么?目前我有两种方法(方法2更清洁),但我想知道你们是否知道更好的方法......

Method1:

bool isZeroX = Math.abs(xSpeed)< minSpeed;
bool isZeroY = Math.abs(ySpeed)< minSpeed;

if(isZeroX && isZeroY) return -1;
else if(isZeroX) xSpeed = 0;
else if(isZeroY) ySpeed = 0;

Method2:

if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;
if(ySpeed==0 && xSpeed==0) return -1;

3 个答案:

答案 0 :(得分:3)

我更喜欢你的第二个例子,因为它是最具可读性的。除非您能证明您应该进行优化,否则优先考虑可读性而不是效率。

答案 1 :(得分:2)

你可以做到

if(-minSpread < xSpeed && xSpeed < minSpeed) {
    xSpeed = 0;
    if(-minSpread < ySpeed && ySpeed < minSpeed) {
        ySpeed = 0;
        return -1;
    }
} else if(-minSpread < ySpeed && ySpeed < minSpeed) {
    ySpeed = 0;
}

答案 2 :(得分:1)

也许制作一个优雅的布尔方法来查看对象是否正在移动/停止:

boolean isStopped() {
    if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
    if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;

    return (ySpeed==0 && xSpeed==0);
}