在速度方面,是否值得在交换前比较价值?

Van*_*ace 1 c++ performance null pointers compare

标题可能听起来很复杂,但在几行代码之后很容易理解.

假设你有一个指针数组,可能是NULL或可能指向实际结构.我们的任务是将所有指针设置为NULL(删除无关紧要).

我们可以通过以下方式实现:

 // first way
 array[i] = NULL;

 // second way
 if (array[i] != NULL)
      array[i] = NULL;
Run Code Online (Sandbox Code Playgroud)

我想知道,如果我们以第二种方式完成它,我们会在已经为NULL的值上保存一些速度吗?假设数组已经是50%NULL.我的大学讲师曾经提到过"比较并不需要花费太多,而价值在变化".这是真的吗?如果我们以第二种方式做到这一点,我们会对速度产生任何积极影响吗?或者额外的比较只会浪费时间?

Mat*_*son 5

第一种方式总是更快.你必须读取指针以检查它是否为null,然后写入它,这比编写它需要更长的时间.虽然进行比较本身可能不会花费太多时间,但采取条件分支的后果绝对不是好事.[好吧,所以编译器可以消除它,但根本不保证].

但与性能一样,"在互联网上询问并不能代替测量!".