2016-04-13 1 views
0

私は最近、Javaプログラムをコンパイルした後、クラス/メソッドが静的にリンクされ、メソッド名が実行時に影響を与えないことを知りました。comeクラスからメソッドを呼び出すのではなく、別のクラスのメソッドを呼び出すことによって、どのくらいのオーバーヘッドが作成されますか?

質問:同じクラスのメソッドを呼び出すのではなく、別のクラスのメソッドを呼び出すと、どのくらいのオーバーヘッドが作成されますか?

私は自分のバージョンの四角形であるBoundsクラスを持っています。私は基本的に描画情報を保持するエンティティである別のクラスを持っています。現在、私は、このEntityクラスのメソッドを持っています。このメソッドは、現在のBoundsを、それ自身のクラスのポイントのリストから生成し、新しい境界を返します。しかし、私はこのメソッドをBoundsクラスに移動し、パラメータとしてポイントのリストを取得し、Boundsを返すようにしたかったのです。このメソッドをBoundsクラスに移動して、このメソッドがここに属しているとは思わないので、Entityクラスをクリーンアップしたいだけです。いくつかの方法でコードを更新する必要があります。現在の変換マトリックスですべてのメソッドをこの境界を更新する必要があるので、My Entityクラスは境界オブジェクトを保持しません。マウス選択のために必要なときに、このフレームを生成したくありません。私の推測では、ローカルメソッドが高速になります。

Bound b = getBounds(); // This would have to change to the below 

Bound b = Bounds.getBounds(this.listOfPoints); // This is a List<Point> 
+1

あなたのプログラムは、あなたがそれを気にする必要があるほど "批評家"ですか? –

+0

このタイプのものが重要な(ほとんど決してない)プログラムを書くなら、あなたはJavaでプログラムしないでください。このような質問は、Javaではほとんど無意味です。 – Radiodef

+0

実際はそうではありません。私はちょうどその質問を考えて、パフォーマンスに影響があるかどうかを知りたいと思っていました。私は未来のベストプラクティスを見つけようとすることに間違ったことは何も見ません。 –

答えて

0

Javaはオブジェクト指向言語です。これは、プログラマーとして、メソッドが所属する場所に配置されるようにコードを記述しなければならないことを意味します(つまり、それが意味を成す場所)。99%のケースでは、パフォーマンスは全く考慮すべきではありません。 JavaコンパイラとJVMには、非常に強力でスマートなパフォーマンスオプティマイザがあります。彼らが自分の仕事をし、自分自身で説明することができるようにコードを書くことに頼ってください。それは、あなたや他の人があなたのコードを維持したり変更したりする必要がある時代の音色を保存します。

関連する問題