2010-12-25 10 views
2

いくつかのメソッドを使用していくつかの識別子を検索できるので、本質的にSQLクエリを実行して値を返すことができます。一般的に使用されるメソッドのパフォーマンスを向上させるために静的メソッドを使用できますか?

現在、これらは静的ではありません。パフォーマンスの観点から、オブジェクトをインスタンス化するのに必要な時間を節約し、メモリを少なくして静的にすることは理にかなっていますか?あるいは、これらの考慮事項は本当に重要ではありません。

+5

私の意見では、このSQLを最適化する方法を見ていると、もっと良い時間を費やすことができます。 –

+0

おそらくデータベースにヒットしないように結果をキャッシュする方法を探していますか?その場合は、シングルトンパターンを調べたり、キャッシングフレームワークを使用したりしてください。 –

答えて

7

静的メソッドを使用する理由は、透明性が向上すると考えられるからです。

静的を使用すると、静的を使用すると8バイトのメモリが得られます(1つの参照)。このメモリの値は1セントの約10,000分の1です。スタティック・コールを使用すると1nsも節約できますが、SQL問合せには10ミリ秒かかりますので、その差は10,000,000倍以上です。

スタティックを使用すると、単語を入力する必要がなくなります(単語を入力する時間の値はとなり、保存するメモリ/処理よりも大きくなります)プログラムがより明確になると思えば、静的を使用してください。例えばユーティリティメソッドを書くためのものです。

+1

ありがとう、それは非常に説得力のある答えです。 – Ankur

+1

また、単語を入力するエディタを使用して、もう一度入力して時間を浪費する必要もありません。 =) – Malabarba

+0

C#で作業する場合、Microsoft.Performanceから「メンバを静的にFXCopとしてマークする」という遭遇に遭遇します。http://msdn.microsoft.com/en-us/library/ms245046.aspx「メソッドにマークを付けると非仮想呼び出しサイトを発行すると、現在のオブジェクトポインタがnullでないことを確認する呼び出しごとに実行時のチェックが行われなくなり、パフォーマンス上のメリットが得られます。機密コード。これはJava(およびAndroid)の問題ではありませんか?ありがとう。 – AnAurelian

8

練習には大きな違いはありません。あなたのケースでは、SQLのクエリはJavaのメソッド呼び出しよりもはるかに時間がかかるため、特にそうです。

メモリの使用方法については、静的メソッドを使用することで、0バイトのメモリが得られることになりますが、それは確実です。

+1

+1 - 確かに、SQLクエリ自体は、おそらくあなたが "最適化"を考えているメソッド呼び出しよりも10,000倍以上長くかかるでしょう。 –

+0

静的メソッド呼び出しの場合、VMは 'this'をスタックに格納する必要はないので、メモリを節約することができますが、JITコンパイラはおそらく'この '。 –

関連する問題