静态助手类与属性的移动性能

时间:2018-03-02 11:15:58

标签: c# xamarin

我正在开发一个应用程序,以便部署在一系列设备上(从真正强大到你在抽屉背面找到的那种与山丘一样古老的东西)。

为了充分利用设备的底层范围,我正在考虑重构现有的代码库。

我有很多像这样的课程

public class MyHelperClass
{
    public static Foo MyHelper()
    {
        // do stuff
        return foo;
    }
}

stuff通常非常简单。

如果这些课程没有提供扩展方法,那么如果我用

之类的内容替换该类,是否有性能提升
public class MyHelperClass
{
    public static Foo MyHelper
    {
        get
        {
            // do something
            return foo;
        }
    }
}

我听说使用属性而不是静态类的低端处理器的性能提升,但没有结论。

1 个答案:

答案 0 :(得分:0)

我并不认为有任何收获。用实例方法替换扩展方法可能是一个非常微小的收获。在这种情况下,this引用将通过CPU寄存器传递,而不是作为存储器堆栈上函数调用的一部分传递。但这是一个微观的收获。甚至这也是编译器优化的主题,在任何情况下最终结果都不会有任何好处。

请注意,属性getter只不过是方法。 .NET中没有属性。您的第二段代码仍将编译为静态方法:

public class MyHelperClass
{
    public static Foo get_MyHelper()
    {
        // do something
        return foo;
    }
}

这就是编译器的功能。如果您反思您的课程,您会在那里找到get_MyHelper静态方法。