• 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#中的匿名方法有什么区别?如果您知道,欢迎给出一个解释。

  • 相关阅读:
    背水一战 Windows 10 (26)
    背水一战 Windows 10 (25)
    背水一战 Windows 10 (24)
    背水一战 Windows 10 (23)
    背水一战 Windows 10 (22)
    背水一战 Windows 10 (21)
    背水一战 Windows 10 (20)
    背水一战 Windows 10 (19)
    背水一战 Windows 10 (18)
    背水一战 Windows 10 (17)
  • 原文地址:https://www.cnblogs.com/wing011203/p/1654694.html
Copyright © 2020-2023  润新知