7.1 简介
程序中可能存在一些代码,虽然具备语义上的价值,但程序在运行时可能永远不会执行到。例如下列代码:
可以发现上述 if 语句只会执行 else
中的代码,因此 if body
中的代码可以完全删除。除了分支(Branch)语句,逻辑运算符也可能因为短路效应(short-circuit)而造成始终只执行部分代码,例如:
其中第一个分量 version <= 1.15
为 false, 因此整个逻辑表达式的值也是 false, 没有必要再对第二个分量求值,代码 version >= 1.14
为无效代码。
聪明的编译器应该有能力清除掉这样的无效代码,这样可以减小最终可执行文件的大小,并且在程序执行时提升缓存命中率(增加程序的局部性,减少 Page Fault 中断的次数),从而提升程序性能。
最后更新于