我正在开发一个应用程序,可以部署在一系列设备上(从真正强大到你在抽屉背面找到的那种与山丘一样古老的东西)。
为了充分利用设备的底层范围,我正在考虑重构现有的代码库。
我有很多这样的课程
public class MyHelperClass
{
public static Foo MyHelper()
{
// do stuff
return foo;
}
}
stuff
通常是微不足道的。
如果类不提供扩展方法,如果我用类似的东西替换该类,是否会有性能提升
public class MyHelperClass
{
public static Foo MyHelper
{
get
{
// do something
return foo;
}
}
}
我听说使用属性而不是静态类的低端处理器的性能提升,但没有结论。
我不认为有任何收获。用实例方法替换扩展方法可能是一个非常微小的收获。在这种情况下,this
引用将通过CPU寄存器传递,而不是作为存储器堆栈上函数调用的一部分传递。但这是一个微观的收获。甚至这也是编译器优化的主题,最终结果在任何情况下都根本没有任何好处。
请注意,属性getter只是方法。 .NET中没有属性。您的第二段代码仍将编译为静态方法:
public class MyHelperClass
{
public static Foo get_MyHelper()
{
// do something
return foo;
}
}
这就是编译器将要做的事情。如果您反思您的课程,您会在那里找到get_MyHelper
静态方法。