额外的代码块 - 范围 - 减慢执行速度?

时间:2017-01-30 19:04:39

标签: java scope

每当我评论我的代码时 - 我都希望得到好评和大评论。有时需要嵌套大评论,我通常会添加额外的缩进。但是,如果我能够使用额外的代码块{}来使缩进更符合逻辑,那将会更加清晰。

我们有一个简单的例子:

// ┌───────────────────┐
// │ COMMENT           │
// └───────────────────┘
{
    // Code in here
}
// ┌───────────────────┐
// │ ;                 │
// └───────────────────┘

此示例中的{}是否会以任何方式降低Java程序的速度,还是会被编译器自动删除?当然{}本身就是一个范围,Java会想要保持这个,对吗?

2 个答案:

答案 0 :(得分:5)

如果您的方法很复杂且难以一次性理解,请尝试从大型方法中提取一个或多个方法。注意:方法调用不是免费的,但是较小的方法往往会被内联,因此即使代码中的方法调用,您也可以获得同样快速的代码。

  

肯定{}本身就是一个范围,Java会想保留它,对吗?

字节代码可以有帧信息但很少有。通常无法从字节代码中了解您是否在代码中使用了额外的{ x(); }(x)

这些框架可能会或可能不会与实际生成的机器代码产生不同,但如果不存在,则它们没有区别。

大多数时候,最重要的是清晰度,当你测量出有问题时,你应该担心性能。您唯一需要担心的是时间复杂性很重要,请使用时间复杂度较低的策略。

  

每种自包含方法需要检查四种不同的放置方向。

在这种情况下,我会有一个像

这样的循环
enum Direction {
    NORTH(0, +1), SOUTH(0, -1), EAST(+1, 0), WEST(-1, 0);

    final int x, y;

    Direction(int x, int y) { this.x = x; this.y = y; }
}

for (Direction dir : Direction.values()) {
    // do something with each direction.
}

您可以将Direction.values()存储在私有常量中以节省一些垃圾/分配。

答案 1 :(得分:2)

他们不会真正放慢任何速度,因为它们将被编译器删除。

但是,您可能希望尝试使用 good 自我记录名称来提取函数,而不是编写类似的代码。它会更具可读性。