2017-01-30 6 views
-2

私のコードをコメントアウトすると、すばらしいコメントをいただきたいと思います。大きなコメントを入れ子にする必要があるときには、通常、余分な字下げを追加します。インデントをより論理的にするために、余分なコードブロック{}を使用できるはずです。余分なコードブロックを実行する - スコープ - 実行を遅くする?

のは、簡単な例を持ってみましょう:

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

は、この例では、{}は、どのような方法でJavaプログラムの速度を遅くするか、それらはコンパイラによって自動的に削除されますか?確かに{}はスコープであり、それ自体であり、Javaはそれを正しいものにしたいと思いますか?

+1

ちょうどそれをベンチマークしてみませんか?しかし、どうすればこのコードを遅くすることができますか? –

+0

@YvesDaoustあなたは非常に正しいです - 私は間違いなくすべきです! –

+1

私はそれらのようなコメントを嫌うだろう。彼らは醜いです、混乱を追加し、彼らが記述するコードよりも古くなる可能性が高いです。自己文書化コードを書く方が良い。私は、JVMがそれを最適化するのに十分スマートであると確信しています。 – duffymo

答えて

5

あなたのメソッドが複雑で理解しづらい場合は、大きなメソッドから1つ以上のメソッドを抽出してみてください。注:メソッド呼び出しはフリーではありませんが、メソッドのサイズが小さくなるとインライン化する傾向があり、コード内のメソッド呼び出しでも高速に処理できるようになります。

確かに{}はスコープであり、それ自体はスコープであり、Javaはそれを正しく保持したいでしょうか?

バイトコードはフレーム情報を持つことができますが、めったにありません。通常、バイトコードから、{ x(); }または(x)をコードに使用したかどうかを知る方法はありません。

これらのフレームは、実際に生成されたマシンコードと異なる場合がありますが、存在しない場合は違いはありません。

ほとんどの場合、最も重要なことは明快です。問題があると測定したときのパフォーマンスについて心配する必要があります。あなたが前もって心配する必要がある唯一の時間は、時間の複雑さが重要なときに、時間の複雑さがより低い戦略を使用することです。

自己完結型の方法では、4つの異なる配置方向を確認する必要があります。その場合

私はあなたが少しごみ/割り当てを保存するために、民間の定数でDirection.values()を保存することができます

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. 
} 

のようなループを持っているでしょう。

2

これらはコンパイラによって削除されるため、実際には何も減速しません。

しかし、そのようなコードを記述するのではなく、という良好な機能を抽出して、自己文書化する名前をとしたいことがあります。それははるかに読みやすくなります。

+0

実際、私はある世代の世代に取り組んでいます。 4つの異なる配置方向は、自己完結型の方法ごとにチェックする必要があります。このコメントは、どのような方向性、時には異なるアイテムの配置を追跡するために使用されます。 –

関連する問題