编程语言
首页 > 编程语言> > Java:在循环方法之间传递对象引用是否有任何实际的性能成本

Java:在循环方法之间传递对象引用是否有任何实际的性能成本

作者:互联网

场景1:

public class Game {
    public void doSomething(Hero hero, Enemy enemy){
        if (hero.IsAlive()){
            hero.checkCollisionWith(enemy);
        }
    }
}

情景2

public class Game {
    Hero hero;
    Enemy enemy;

    public Game(Hero hero, Enemy enemy) {
        this.hero = hero;
        this.enemy = enemy;        
    }

    public void doSomething() {
        if (hero.IsAlive()){
            hero.checkCollisionWith(enemy);
        }
    }
}

现在,在正常情况下,我想两者都可以接受,但是,在一个每秒被调用60次的游戏循环中,这是第一个通常要避免的选择吗?通过在循环中调用的方法传递引用有多少性能影响?

还要记住,这只是一个例子,在实际项目中,会有更多的这些方法被调用,并涉及更多的对象.

为游戏类提供前期需要的参考(在施工时)而不是经常传递它们会更明智吗?

解决方法:

以这种方式传递的参数非常有效 – 调用不带参数的函数和带参数的函数之间的差异可以忽略不计.

特别是在渲染/碰撞/ AI代码肯定会非常处理器密集的游戏环境中,这样的小差异无关紧要.

但是从代码的简洁和优雅的角度来看,我认为你的第二个解决方案更加包含,更传统的OOP和可读性.

标签:java,performance,game-loop
来源: https://codeday.me/bug/20190702/1359613.html