在删除/释放之前不进行空检查会优化对函数的调用吗?
|
关于是否将空检查放在删除之前,存在几个问题。现在,我仍然在许多生产代码中看到了这种做法,而且我不相信所有这些程序员都没有意识到“ 0”是安全的事实。
因此,我想知道是否值得假设在
delete/free
之前进行空检查是否可以通过保存函数调用来提供性能优化?
if(0 != p)
delete p;
没有找到相关结果
已邀请:
3 个回复
丧泉缝锋
不是函数,但是根据类型的不同,后面可能会有
调用。 充其量您最多可以将第二个比较保存到
。这全都是过早的优化:这都不是您的瓶颈,并且您正在编写冗余代码。 写吧:
填盖
上的
或
是绝对安全的事实。如果他们没有意识到这一点,那么他们就不会浪费时间检查它。 因此,我想知道这是否值得 假设之前的空检查 删除/释放将提供 通过节省性能优化性能 函数调用? 您正在做一个假设……因为,您不想相信那些家伙错了吗?抱歉,伙计-他们错了,就是这样。您没有证据或合理的理由相信进行ѭ9支票会带来好处。 或那个编写该代码的人都这么认为。毕竟,即使您可以消除这种方式的函数调用,此处的函数调用的成本也是微不足道的(如果没有内联的话),这很可能是这样,并且程序员花费更多时间编写检查代码,已为您编写。我宁愿过分热衷于正确性,也不愿像这样过早地进行优化-您是否真的建议任何人帮忙,建议它可能是一种优化?
勘掸府迫路
(和
)不会对空指针造成任何伤害。相反,它们使某些编译器/某些计算机崩溃。因此,实践的起源。 使这种习俗得以维持的是结合了货物崇拜的编程和小脑子的思想(“愚蠢的一致性是小头脑的小妖精。”)。他们复制它的语法。在这种情况下,由于某些代码会执行空指针检查,因此,一个狂热的程序员会认为这是这样做的方法。 心胸狭窄的心态表明只有一种方法可以做到这一点。由于某些没人要触摸的遗留代码会使用此空指针检查,因此所有代码都必须以这种方式释放动态分配的内存。我已经看到了强制执行此行为的多个项目的编码标准(并且那些编码标准本身是由货物崇拜技术创建的)。