2012-04-29 19 views
1

複数のスレッドプログラムで関数を使用する方法や静的メソッドを使用する方が速いのはなぜですかより速い理由を説明してください。関数と静的メソッドとの比較

+4

"関数"は実際にJavaで使用される用語ではないので、あなたの質問を明確にする必要があります。理想的には、両方のアプローチを示す例を挙げてください。 –

+1

スタティックと非スタティックの両方の方法が適しています。 –

+1

彼は方法ではなく機能を意味すると思う。 –

答えて

2

"純粋な関数"がマルチスレッド化に適していると聞いたことがあります。純粋な関数は、Javaで静的メソッドとして実装することもできますが、インスタンスメソッドとして実装することもできます。要点は、マルチスレッドの場合、変更可能なグローバル変数を持たない方が良いことです。ですから、あなたが不変オブジェクトを持っていれば、それは静的メソッドが純粋な関数を実装しているのと同じくらい良いことです。

10

2つのアプローチ(私が真剣に疑う)の間に賢明な違いがあっても、これに基づいてプログラムを設計するべきではありません。優れた性能を達成するには、良いデザインを(ほとんど)犠牲にするべきではありません。あなたが多くを得ることはありませんが、あなたは多くを失うからです。

+1

+1:小さな違いがあっても、JVMが改善するにつれてその違いが変化することに失望するかもしれません。これは、設計に合わせて設計を大幅に変更し、実際に遅くなっていることが分かり、失望する可能性があることを意味します。シンプルで明快なものをつけて、ナノ秒ごとに心配しないでください –

+0

完全に同意します。決定静的対インスタンスは、このメソッドが論理的に*特定のオブジェクトインスタンスまたは特定のクラスのすべてのオブジェクトに属しているかどうかに基づいて行われる必要があります。小さなパフォーマンス上のペナルティがあるかもしれません(パブリックの非最終メソッドは仮想呼び出しです)。通常は無視できますが、JVMはスマートになり、より効率的に処理されます。このような違いがアプリケーションにとって本当に重要なのであれば、Javaはおそらく貧しい選択です。 –

関連する問題