【发布时间】:2016-03-17 13:58:01
【问题描述】:
这些代码示例在性能方面是否存在差异?
if (this.game.physics.arcade.overlap(this.player, this.barels) && (this.game.time.now - this.srdicka.timecheck > this.srdicka.frequency) || (this.player.position.y > this.game.height + 100)) {
this.damage(1);
}
或
if (this.game.physics.arcade.overlap(this.player, this.barels) && (this.game.time.now - this.srdicka.timecheck > this.srdicka.frequency)) {
this.damage(1);
}
if (this.player.position.y > this.game.height + 100) {
this.damage(1);
}
我知道两者都可以正常工作,但我不确定哪个更好。
【问题讨论】:
-
取决于逻辑,你应该关心如果两个检查都为真,那么第二个例子会造成2次伤害
-
是的,如果等式只有一侧为真,则通过或通过,因此第一个会更快
-
在这种特殊情况下(和大多数情况下),我认为性能差异可以忽略不计。也就是说,在我有多个
if条件的情况下,我会努力争取可读性。 -
@lux 如果这是通过游戏循环运行的,因为它似乎是预期的,尽管性能会微不足道,它会发生几次,并且只是为了了解它,你应该知道一个或不如果第一个条件为真,则不完全评估
-
@johnny5 所以从其他人的说法来看,在我不需要同时处理两个条件都为真的游戏循环中,最好在一个语句中使用多个条件乙>。如果我误解了您的回答,请回复我。谢谢:)
标签: javascript phaser-framework statements multiple-conditions ifs