zoukankan      html  css  js  c++  java
  • 《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中代码,这个规则带来的影响会更大。

  • 相关阅读:
    【算法笔记】B1020 月饼
    JZOJ 3412. 【NOIP2013模拟】KC看星
    JZOJ 3517. 空间航行
    JZOJ 3515. 软件公司
    JZOJ 3514. 最小比例
    JZOJ 3490. 旅游(travel)
    luogu P3178 [HAOI2015]树上操作
    JZOJ 3427. 归途与征程
    JZOJ 3426. 封印一击
    JZOJ 3425. 能量获取
  • 原文地址:https://www.cnblogs.com/kw13202/p/6767347.html
Copyright © 2011-2022 走看看