我们最好尽可能的编写最清晰的代码,将优化交给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/kw13202/p/6767347.html

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

  1. 《Effective C#》读书笔记——条目11:理解短小方法的优势C#语言习惯

    在应用程序开发过程中,开发者都力求写出更加高效的代码.但是当你想手工为C#编译器优化代码时,你的种种优化可能反倒会阻碍JIT进行更加高效的优化.因此,我们最好尽可能的写出最清晰的代码,将优化工作交给J ...

  2. [浪子学编程][读书笔记]-道法自然之设计方法

    道法自然-面向对象实践指南 需求分析:追求完美 vs. 容忍缺陷 用例分析:海底总动员 vs. 云中漫步 设计方法:面向过程 vs. 面向对象 设计方法 面向过程 优点 结构简单 开发速度快 缺点 全 ...

  3. 大数据之路读书笔记-11事实表设计

    大数据之路读书笔记-11事实表设计 文章目录 大数据之路读书笔记-11事实表设计 11.1 事实表基础 11.1.1 事实表特性 11.1.2 事实表设计原则 11.1.3 事实表设计方法 11.2 ...

  4. 正面管教读书笔记 01 正面的方法

    正面管教读书笔记 01 正面的方法 正面管教 作者:简·尼尔森(Jane Nelsen) 第1章 正面的方法 社会的变化造成了孩子的变化 社会进步导致服从和顺从不在重要了 今天的孩子很少有机会培养责任 ...

  5. mozart-oz中有限域编程读书笔记

    mozart-oz自带文档: <Finite Domain Constraint Programming in Oz. A Tutorial.>读书笔记 http://www.mozart ...

  6. Python编程读书笔记

    Chapter 2. python编程概述 2.1. 知识点 raw_input是python的内建函数,要求用户输入,输入结果是一个字符串. example: test = raw_input(&q ...

  7. UNIX网络编程--读书笔记

    会集中这段时间写UNIX网络编程这本书的读书笔记,准备读三本,这一系类的文章会不断更新,一直会持续一个月多,每篇的前半部分是书中讲述的内容,每篇文章的后半部分是自己的心得体会,文章中的红色内容是很重要 ...

  8. 这个好用高效的读书笔记app软件一定要收藏

    打开软件首页就是卡片式的读书笔记,可以上下左右滑动切换下一条笔记.首页笔记的推荐是系统根据你原来做的笔记或者看你点赞评论等行为智能推荐的.切换到下一条后就无法返回到上一条笔记. 点击底部中间的相机按钮 ...

  9. PUB/SUB Pattern-Oriented Software Architecture v1巨详细读书笔记 11

    GoF的Observer有没有什么变体存在,他的别名可以叫什么?在本笔记中,Publisher-Subscriber(出版-订阅)模式为这些问题做了完美解答.在笔记的最后还描述了Pattern Sys ...

  10. pthon核心编程-读书笔记:知识点摘录与总结(方便理解和快速记忆)

    Python 中的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的.在核心语言中提供这些重要的构建单元,可以鼓励人们使用它们, 缩短开发时间与代码量,产生出可读性更好的代码.C不提供, c+ ...

最新文章

  1. 从Varchar转换为 datetime
  2. 考公务员的本科学历可以考吗
  3. 用TensorFlow和TensorBoard从零开始构建ConvNet(CNN)
  4. 批量删除java注释_怎样批量去掉java文件中的注释
  5. 社交电商风潮起,中小卖家何处去
  6. 信息系统项目管理师:第1章:信息化与信息系统(2)-重点汇总
  7. Cisco Ensoft
  8. Simulink中的某一个模块用了我自己定义的MATLAB function模块,但是出现的结果是:The block ‘**/matlab function/sfunction‘ is in an
  9. 利用Docker/Ansible实现轻量集群服务部署(视频演示+彩蛋)
  10. ORACLE 11g安装图解
  11. c语言三种循环语句,C语言三种循环语句的功能等价性
  12. 【转】Odoo开发之:工作流 workflow
  13. IE8中动态改变伪元素样式不起作用BUG
  14. PMP培训机构转个圈
  15. C++:使用类方法根据四点计算四面体体积
  16. oserror mysql config not found_解决问题:OSError: mysql_config not found
  17. 最新steam rpgmz dlc有新技能新人物,有兴趣么?
  18. fwr310虚拟服务器设置,fast迅捷FWR310无线路由器设置图文教程
  19. 展锐智能机平台sc9820e调试pwm背光所遇问题小结
  20. 小米手机上微信双开-初窥

热门文章

  1. 3.2 LSTM、GRU RNN概述
  2. 机器学习中的数学(二):参数估计与似然函数(MLE)
  3. 下滑加载更多js_jquery实现移动端下拉加载更多
  4. linux sendemail,在linux下使用sendEmail发送邮件
  5. 《逻辑说服力》— 综合素质提升书籍
  6. rk3399_android7.1关于看门狗驱动的实现原理说明
  7. Leetcode669.Trim a Binary Search Tree修建二叉树
  8. ZZNU-oj-2141:2333--【O(N)求一个数字串能整除3的连续子串的个数,前缀和数组+对3取余组合数找规律】...
  9. Jmeter插件安装及使用
  10. NYOJ 题目94 cigarettes