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

什么比较贵,比较还是分配?

  •  14
  • cmsjr  · 技术社区  · 15 年前

    Algorithms

    2 回复  |  直到 15 年前
        1
  •  10
  •   Pyrolistical    15 年前

    你怎么认为?

    在最低级别,一个执行两次读取,另一个执行一次读取和一次写入。

    但你为什么真的要在乎呢?您不应该关心这个级别的性能。优化 Big-O

        2
  •  7
  •   David Thornley    15 年前

    微观优化几乎总是错误的。除非程序运行得太慢,否则甚至不要启动它,并且您可以使用探查器来确定缓慢部分的确切位置。

    一旦你做到了这一点,我的建议是看看如何改进代码和数据局部性,因为缓存未命中几乎肯定比次优指令更糟糕。

    在这种情况下,如果您可以使用基于赋值或基于比较的方法,请尝试这两种方法并计时。微观优化是一个数字游戏。如果数字不够好,找出原因,然后验证你所做的工作是否有效。

    那么,你所说的比较是什么意思?条件跳转会给任何模糊的现代处理器带来问题,但不同的处理器会做不同的事情,并且不能保证任何给定的处理器都会减慢速度。此外,如果其中任何一个导致缓存未命中,则无论发生什么情况,都可能是速度较慢的一个。