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