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.我的大学讲师曾经提到过"比较并不需要花费太多,而价值在变化".这是真的吗?如果我们以第二种方式做到这一点,我们会对速度产生任何积极影响吗?或者额外的比较只会浪费时间?
第一种方式总是更快.你必须读取指针以检查它是否为null,然后写入它,这比编写它需要更长的时间.虽然进行比较本身可能不会花费太多时间,但采取条件分支的后果绝对不是好事.[好吧,所以编译器可以消除它,但根本不保证].
但与性能一样,"在互联网上询问并不能代替测量!".