2 つのメソッドの実装:
public void setPosiotion(int x, int y) { //何もしない }
public void setPosiotion(Point point) { //何もしない }
setPosition() を 10 億回呼び出す必要があるとしたら、新しい Point を作成する必要のないメソッドの方がはるかに高速に動作するでしょうか?
2 つのメソッドの実装:
public void setPosiotion(int x, int y) { //何もしない }
public void setPosiotion(Point point) { //何もしない }
setPosition() を 10 億回呼び出す必要があるとしたら、新しい Point を作成する必要のないメソッドの方がはるかに高速に動作するでしょうか?
setPosition()を10億回呼び出す必要がある場合、新しいPointを作成する必要のないメソッドは著しく高速に機能しますか?
setPosition
それはメソッドが 何をするかに依存します。
メソッドが単純にtheの値x
とy
値を使用する場合は、オブジェクト Point
を作成/渡さない方がおそらく高速です。Point
メソッドが渡した値と値Point
を保持するためのをすぐに作成する場合は、自分で作成する方が高速になる可能性があります。x
y
Point
Point
これは、最新のJVMがエスケープ分析を使用して、オブジェクトをヒープオブジェクトとして作成する必要がないと推測できるという事実によって複雑になっています。反対に、メソッド呼び出し(etcetera)のレベル数x
とy
値を渡す必要があるかどうかによって異なります。
要するに、予測するのは難しいです。
setPosition
最後に、アプリケーションのプロファイルを実際に作成していない限り、10億回呼び出されるという想定は疑わしいものです。また、それが有効であっても、これらの呼び出しがアプリケーションの実行時間全体に与える影響はわずかである可能性があります。
最初にプロファイルを作成してから、最適化します。
多少の違いはあるかもしれませんが、長い式を書くのにかかる時間よりも短い可能性があります。時間と効率の方が重要な場合もあります。
作成にかかる時間よりもさらに重要なのは、コードの保守に費やす時間です。これは、開発にかかる時間の 3 倍になる可能性があります。これは、保守性が主な関心事であることを示唆しています。
要するに; シンプルで明確に理解できるコードを作成すると、多くの場合、パフォーマンスが向上し、長期的には最も効果的になります。