1

これらのどれが練習するのに最適なのか疑問に思っていますか?

コード 1:

public void push<T>(T pushthis)
{
    pusher pusher = new pusher();
    pusher.push(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(pushthis));
}

コード 2:

public void push<T>(T pushthis)
{
    pusher pusher = new pusher();
    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    pusher.push(serializer.Serialize(pushthis));
}

コード 3:

public class pusher()
{
    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

    public void push<T>(T pushthis)
    {
       pusher pusher = new pusher();                
       pusher.push(serializer.Serialize(pushthis));
    }
}

シリアライザーの変数を作成する方がよいかどうかを知りたいのですが、そうであれば、メソッド内またはクラス内のどこに配置するかを知りたいですそして、クラスプッシャーのインスタンスだけで、プッシュメソッドを何度も使用します。

可能であれば、コードの最適化を研究するための参考文献をいくつか教えていただけますか

4

3 に答える 3

2

メソッドをコーディングする最初の方法と 2 番目の方法は同じです。ローカル変数は定義され、すぐに使用されます。他に使用されている場所はありませんserializer

コーディングの 3 番目の方法は、 のserializer複数回の呼び出しで再利用しますpusher。複数回のコンストラクターを呼び出すことはないJavaScriptSerializerため、より効率的である可能性があります。

変数を作成することで、JavaScriptSerializerクラスのすべてのインスタンス間で共有できる可能性があります。を呼び出すなどして構成を動的に変更しない限り、コンストラクターの呼び出し回数をさらに減らすことができる場合があります。pusherserializerstaticRegisterConverters

于 2013-05-31T02:10:07.293 に答える
1

コード 1 とコード 2 に大きな違いはないと思います。プッシュ メソッドを複数回使用している場合は、ローカル / メソッド レベルの変数ではなく、クラス レベルの変数にします。

于 2013-05-31T02:09:46.227 に答える
1

最善の方法は、パフォーマンスを測定することです。

もしあったとしても、大きな違いが見られるとは思えません。メソッドでオブジェクトを作成すると、そのオブジェクトはメソッドの最後でスコープ外になり、効率的に GC されます。

JavaScriptSerializer をクラスのフィールドとして宣言する場合、同時に呼び出す場合はスレッドセーフであることを確認する必要があります。

于 2013-05-31T02:10:12.627 に答える