代码之家  ›  专栏  ›  技术社区  ›  Armentage

NET CLR是否自动内联属性?

  •  8
  • Armentage  · 技术社区  · 17 年前

    property int Length { get; set; }
    

    在运行时JIT完成后,是否会执行“Length\uuu get”函数(为其构建堆栈、跳转以执行代码等)?或者抖动是智能的,并且知道这可以被重写为类字段访问?

    2 回复  |  直到 17 年前
        1
  •  13
  •   Jon Skeet    17 年前

    是的,CLR将在“正常”情况下内联这些。在某些情况下,内联 然而,发生了——包括从 MarshalByRefObject (因为它可以是运行时代理)。

    内联的规则取决于您使用的确切CLR-x64 vs x86,版本等。琐碎的属性内联的可能性与您得到的一样:)

    (由于某些原因,我在过去看到一个普通属性比双精度字段访问速度慢……对于大于本机单词大小的值可能有一些限制。)

        2
  •  7
  •   Stewart    17 年前

    NET3.5JIT'r更智能一些,这取决于它。确实如此 内联。

    To Inline or not to Inline: That is the question .

    推荐文章