zoukankan      html  css  js  c++  java
  • Effective C# Item31:尽可能实现短小简洁的方法

        我们推荐编写短小简洁的方法,而不是冗长复杂的方法,主要的原因在于.NET的JIT机制。

        当使用C#代码编写的程序在运行时,需要经历两个步骤:1)C#编译器将我们编写的源代码编译为IL中间代码;2)CLR通过调用JIT编译器将IL代码转换成本地机器代码。这两个步骤会分摊在整个应用程序运行的过程中。CLR并不会再应用程序启动时对整个应用程序做JIT编译,而是以方法为单位进行JIT编译。这可以在相当程度上减少程序的启动时间,同时也防止程序由于较多代码需要jIT编译而响应很慢,那些没有被调用的方法是不会被JIT编译的。因此通过将代码编写为多个短小简洁的方法,我们可以减少需要JIT编译的工作量,来尽量提升应用程序的性能。

        短小简洁的方法还可以使得JIT编译器更容易支持enregistration,enregistration指选择哪些局部变量放入寄存器中存储,而不存储在堆栈中,较少的局部变量将使得JIT编译器更容易做最合适的enregistration选择,同时方法中控制流的简单性也影响着JIT编译器如何做更好的enregistration。

        JIT编译器还会对内联方法做决定,内联意味着将函数调用直接替换为函数体内的代码,例如属性中的get和set访问器,就会被看做是内联方法。

        思考:关于属性的get和set访问器,我记得在Jeffrey的书中,曾经说过在IL中get和set访问器会被转换成方法,那么还算是内联吗?内联和C#中的匿名方法有什么区别?如果您知道,欢迎给出一个解释。

  • 相关阅读:
    企业微信应用授权
    exec存储过程示例
    jquery判断对象是否存在
    IScroll5要防止重复加载
    transitionEnd不起作用解决方法
    微信接口 output {"errMsg":"translateVoice:fail, the permission value is offline verifying"}
    javascript保留两位小数
    html取消回车刷新提交
    企业微信后台登录
    企业微信开启开发者工具
  • 原文地址:https://www.cnblogs.com/wing011203/p/1654694.html
Copyright © 2011-2022 走看看