【问题标题】:Performance hit of checking for null检查 null 的性能损失
【发布时间】:2012-08-23 08:13:51
【问题描述】:

谁能告诉我在 c# 中检查对象或对象的属性是否为空的性能成本是多少?我正在开发一个 ASP.NET MVC 应用程序,该应用程序正在模型中完成空值检查,然后在视图中再次完成。我觉得这太过分了,但如果没有真正的性能影响,那么我认为这样做没有什么害处。

【问题讨论】:

  • 测试时性能工具告诉你什么?
  • 非常非常非常小。除非您将空检查确定为性能瓶颈,否则不要担心。
  • 为什么不分析它并自己找出来。使用 Stopwatch 类很容易。
  • 对于 Web 应用程序,它应该可以放心地忽略。
  • 处理异常的命中会覆盖很多null检查。

标签: c# asp.net-mvc performance null null-check


【解决方案1】:

如果您在渲染和初始化模型时只执行一次,我认为它是不可测量的。

如果它位于计算密集型循环中,则会产生影响。

查询数据库、读/写文件等是你应该注意的。

【讨论】:

    【解决方案2】:

    几乎是微不足道的。这样做两次不是问题。做几十亿次可能仍然不是问题(但会表明其他一些编程问题)

    【讨论】:

      【解决方案3】:

      当然会有一些性能损失,检查是否为空需要一些指令...

      如果您想将性能损失降至最低,请使用 ILDASM 工具查看您正在使用的方法的 CIL 代码,并检查正在发生的实际执行路径。我什至会说:确保您使用的是 Object.ReferenceEquals 之类的东西(而不是实例的 Equals 方法或相等运算符)。

      【讨论】:

      • 你有没有文章或链接更详细地解释了Object.ReferenceEquals 比其他人更好,这是一个非常有趣的话题。我一般只做:id(myValue != null)
      猜你喜欢
      • 2016-11-10
      • 2012-02-08
      • 2019-02-09
      • 2018-04-17
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 2018-08-22
      相关资源
      最近更新 更多