【问题标题】:Simple read vs write boolean variable performance comparison question简单的读写布尔变量性能比较问题
【发布时间】:2009-11-18 17:10:07
【问题描述】:

程序员应该首选的方式:

1) 只写:

SomeBoolean = True

2) 仅在必要时读写

If Not SomeBoolean Then SomeBoolean = True

【问题讨论】:

    标签: performance memory compiler-construction boolean


    【解决方案1】:

    如果不了解更多关于环境的信息,真的很难知道这个问题的答案。似乎合理的检查是通过多次迭代此任务来运行一些性能测试。

    与您的预期相比,经验证据有时令人惊讶。

    【讨论】:

      【解决方案2】:

      假设您指的是 RUNTIME 上下文和共享变量:

      在多处理器环境中,不必要的写入会导致性能下降:缓存刷新、同步开销等。

      所以是的,它可以有所作为......如果情况适合它,请进行分析。

      【讨论】:

      • 所以你说我应该做检查?
      • 取决于您的性能要求:有些人可能会说在 X、Y、Z 情况下这是“过早优化”,而在其他一些情况下(例如内核驱动程序),确定情况可能至关重要。
      • 还应该记住,条件跳转可能比赋值本身花费更多(如果变量在 L1 缓存中并且其他线程不经常访问它)。所以一般来说我建议不要做这样的“优化”,除非逻辑和/或分析表明导致的缓存失效是一个瓶颈
      【解决方案3】:

      1) 可能会快几纳秒。我怀疑与您的代码中发生的其他事情相比,这种差异是纳米级的。

      另一方面,当我知道我实际上是在更改布尔值时,如果我想做其他事情,我通常会写 (2)。这给了我一个地方去做。

      【讨论】:

        【解决方案4】:

        差异可以忽略不计。在向驱动器读取和写入文件时,您会看到性能差异,但程序性能是以大 O 来衡量的。阅读:

        BIG O notation

        尤其是在 VB 中,您不会看到任何差异。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-12-08
          • 2014-05-17
          • 1970-01-01
          • 2013-01-29
          • 1970-01-01
          • 2021-07-16
          • 1970-01-01
          相关资源
          最近更新 更多