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));
    }
}

我想知道是否更好地为序列化程序创建一个变量,如果是的话,将它放在哪里,在方法内部或类内部我将多次使用 push 方法,只有一个类 pusher 的实例。

如果可能的话,你能找到一些参考资料供我学习代码优化吗

4

3 回答 3

2

该方法的第一种和第二种编码方式是相同的。局部变量被定义并立即使用;没有其他地方serializer使用。

第三种编码方式serializer在多次调用pusher. 它不会JavaScriptSerializer多次调用构造函数,因此可能效率更高。

您可以通过创建变量JavaScriptSerializer在类的所有实例之间共享。除非您动态更改配置,例如通过调用,否则您可以进一步减少构造函数的调用次数。pusherserializerstaticRegisterConverters

于 2013-05-31T02:10:07.293 回答
1

我认为代码 1 和代码 2 没有太大区别。如果您多次使用 push 方法,则将其设为类级别变量而不是本地/方法级别变量

于 2013-05-31T02:09:46.227 回答
1

最好的办法是衡量绩效。

我真的怀疑你会看到很大的不同,如果有的话。当您在方法中创建对象时,它将在方法结束时超出范围并有效地进行 GC。

如果您将 JavaScriptSerializer 声明为类上的字段,则需要确保它是线程安全的,如果您将同时调用它。

于 2013-05-31T02:10:12.627 回答