《C#高效编程》读书笔记11-理解短小方法的优势

《C#高效编程》读书笔记11-理解短小方法的优势

我们最好尽可能的编写最清晰的代码,将优化交给JIT编译器完成。一个常见的错误优化是,将大量逻辑放在一个函数中,以期减少额外的方法调用开销。这种将函数逻辑直接写在循环内部的常见优化做法却会降低.NET应用程序的性能。

public string BuildMsg(bool takeFirstPath)
{
    StringBuilder msg = new StringBuilder();
    if(takeFirstPath)
    {
        msg.Append("A");
        msg.Append("B");
        msg.Append("C");
    }
    else
    {
        msg.Append("E");
        msg.Append("F");
        msg.Append("G");
    }
    return msg.toString();
}

在第一次调用BuildMsg时,if-else的两个分支都会被JIT编译。而实际上仅需要编译其中一个。修改后:

public string BuildMsg2(bool takeFirstPath)
{
    if(takeFirstPath)
    {
        return First();
    }
    else
    {
        return Second();
    }
}

因为两个分支内部的代码拆分到了各自的方法中,所以这两个方法可以根据需要再JIT编译,而不必在第一次调用时执行。同理,对于switch语句中的每个case中代码,这个规则带来的影响会更大。

原文地址:https://www.cnblogs.com/grj001/p/12223169.html