Zia*_*man 5 c++ data-structures
干草亲爱的!
我知道if语句在c ++中是一个昂贵的陈述.我记得,一旦我的老师说,如果声明在计算机时间意义上是一个昂贵的陈述.
现在我们可以通过在c ++中使用if语句来做所有事情,因此这在编程透视图中是非常强大的语句,但在计算机时间透视图中它很昂贵.
我是初学者,在介绍c ++课程后我正在学习数据结构课程.我的问题
是,我是否更好地使用if语句进行扩展?
Sca*_*ark 13
我不确定你如何推断if语句很昂贵.
如果你有
if ( true ) { ... }
Run Code Online (Sandbox Code Playgroud)
然后,这if将使您的编译器最优化.
另一方面,如果你有..
if ( veryConvolutedMethodTogGetAnswer() ) { .. }
Run Code Online (Sandbox Code Playgroud)
那么这个方法veryConvolutedMethodTogGetAnswer()做了很多工作,你可以说这是一个昂贵的if语句,但不是因为if,而是因为你在决策过程中所做的工作.
"如果"在时钟周期方面本身通常不"昂贵".
过早优化是个坏主意.在有意义的情况下使用if语句.当您发现代码的一部分需要改进其性能时,可能会从代码的那一部分中删除if语句.
如果语句可能很昂贵,因为它们会强制编译器生成分支指令.如果你能找到一种方法来编写相同的逻辑,那么即使有更多的总指令,编译器也不必完全分支,代码可能会快得多.我记得对于如何重新编码一小段代码以使用各种位操作而不是进行任何分支加速10-20%的因素,我感到非常惊讶.
但这并不是一般避免它们的理由.当你试图从一段你知道性能至关重要的代码中榨取最后一点速度时,请记住这一点,因为你已经运行了一个分析器和其他各种工具来证明这一点.
如果语句昂贵,另一个原因是它们会增加程序的复杂性,这使得它更难以阅读和维护.保持低功能的复杂性.不要使用过多的语句来通过函数创建不同的控制路径.