複数のスレッドプログラムで関数を使用する方法や静的メソッドを使用する方が速いのはなぜですかより速い理由を説明してください。関数と静的メソッドとの比較
答えて
"純粋な関数"がマルチスレッド化に適していると聞いたことがあります。純粋な関数は、Javaで静的メソッドとして実装することもできますが、インスタンスメソッドとして実装することもできます。要点は、マルチスレッドの場合、変更可能なグローバル変数を持たない方が良いことです。ですから、あなたが不変オブジェクトを持っていれば、それは静的メソッドが純粋な関数を実装しているのと同じくらい良いことです。
2つのアプローチ(私が真剣に疑う)の間に賢明な違いがあっても、これに基づいてプログラムを設計するべきではありません。優れた性能を達成するには、良いデザインを(ほとんど)犠牲にするべきではありません。あなたが多くを得ることはありませんが、あなたは多くを失うからです。
+1:小さな違いがあっても、JVMが改善するにつれてその違いが変化することに失望するかもしれません。これは、設計に合わせて設計を大幅に変更し、実際に遅くなっていることが分かり、失望する可能性があることを意味します。シンプルで明快なものをつけて、ナノ秒ごとに心配しないでください –
完全に同意します。決定静的対インスタンスは、このメソッドが論理的に*特定のオブジェクトインスタンスまたは特定のクラスのすべてのオブジェクトに属しているかどうかに基づいて行われる必要があります。小さなパフォーマンス上のペナルティがあるかもしれません(パブリックの非最終メソッドは仮想呼び出しです)。通常は無視できますが、JVMはスマートになり、より効率的に処理されます。このような違いがアプリケーションにとって本当に重要なのであれば、Javaはおそらく貧しい選択です。 –
- 1. 関数内静的変数と静的クラス変数の比較
- 2. "Do-er"クラスと静的ユーティリティメソッドの比較
- 3. 静的でない関数のstaticとnon-staticの整数の比較
- 4. 静的メソッドと静的変数のjava
- 5. 低レベルの違い:静的メソッドを使用した非静的クラスと静的メソッドを使用した静的クラスとの比較
- 6. Python辞書キー(クラスオブジェクト)複数の比較関数との比較
- 7. 関数をPythonのバインドされたメソッドと比較する3
- 8. 静的メソッドと変数
- 9. Javaでメソッドを呼び出す3つの方法 - 静的と非静的の比較
- 10. 静的クラスと静的メソッド
- 11. 関数テンプレートと自動キーワードの比較
- 12. タイムゾーン計算。 PHP関数とMySQL関数との比較
- 13. 目的関数のunichar比較
- 14. データベースからの静的データの取得とファイルシステムの比較
- 15. 静的メンバー関数とスレッドセーフ
- 16. スレッドセーフと静的関数
- 17. 静的なHTML /画像のパフォーマンスベンチマーク:lighthttpdとAmazon S3の比較?
- 18. C++静的ローカル関数とグローバル関数
- 19. モンテカルロ法と進化的アルゴリズムの比較と比較
- 20. 演算子のオーバーロード:メンバ関数と非メンバ関数の比較?
- 21. 静的メソッドとスレッドセーフティのローカル変数
- 22. Objective-Cのステートレス静的メソッドとC関数
- 23. 静的メソッドで静的メソッドと非静的メソッドにアクセスする方法
- 24. ポインタと整数の比較?
- 25. PHPのソート比較関数
- 26. Pythonicの比較関数
- 27. イベントとオーバーライド可能なメソッドの比較
- 28. ソートスタックオーバーフローと比較数とスワップ数負数
- 29. C#の静的メソッドとコンソール
- 30. バインドと変数の明示的割り当てとの比較
"関数"は実際にJavaで使用される用語ではないので、あなたの質問を明確にする必要があります。理想的には、両方のアプローチを示す例を挙げてください。 –
スタティックと非スタティックの両方の方法が適しています。 –
彼は方法ではなく機能を意味すると思う。 –