property int Length { get; set; }
在运行时JIT完成后,是否会执行“Length\uuu get”函数(为其构建堆栈、跳转以执行代码等)?或者抖动是智能的,并且知道这可以被重写为类字段访问?
是的,CLR将在“正常”情况下内联这些。在某些情况下,内联 然而,发生了——包括从 MarshalByRefObject (因为它可以是运行时代理)。
MarshalByRefObject
内联的规则取决于您使用的确切CLR-x64 vs x86,版本等。琐碎的属性内联的可能性与您得到的一样:)
(由于某些原因,我在过去看到一个普通属性比双精度字段访问速度慢……对于大于本机单词大小的值可能有一些限制。)
NET3.5JIT'r更智能一些,这取决于它。确实如此 内联。
To Inline or not to Inline: That is the question .