【问题标题】:Is there a performance difference between setting a field by a method AND setting it by property? [duplicate]通过方法设置字段和通过属性设置字段之间是否存在性能差异? [复制]
【发布时间】:2012-03-08 10:58:14
【问题描述】:

可能重复:
Actual Performance of Fields vs. Properties

通过方法设置字段和通过属性设置字段之间是否存在已知的性能差异?

(我只是想知道实现一个属性是否会向 IL 发出一些额外的东西,这使得 PROPERTY 的工作速度比直接调用设置值的方法要慢)

【问题讨论】:

  • 试试吧!循环运行这两种方法并计时。
  • @Oded:我做到了 :) 现在我可以看到该属性似乎更慢
  • 没有什么比自己测试这些东西更好:)
  • 如果存在性能差异,则必须以 µs 为单位进行衡量,因此您应该使用更易于理解的方式,而不是最有效的方式。

标签: c# .net properties clr


【解决方案1】:

属性方法。如果你用 get/set 声明了一个名为 MyProperty 的属性,那么编译器将发出两个方法:get_MyPropertyset_MyProperty,装饰它们以使其他人(将使用该属性)可以理解这些方法是 getter/属性的设置器。例如,托管 C++ 的第一个版本并没有隐藏这个技巧。看看反编译版本的方法和属性设置器(例如),你会发现它们并没有什么不同,你在代码中看到的是让它们“好”的糖。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2011-03-11
    • 2012-03-21
    • 1970-01-01
    相关资源
    最近更新 更多