我有一行代码,位于 if 语句中,但目前我配置的方式从未满足过该条件。它大大减慢了我的程序速度。它只是一个打印语句,但是如果我只是在该语句中声明一个变量,它就可以完美运行。我不明白,因为这行代码从未执行过,为什么它会减慢我的程序速度。
很抱歉缺少代码,但程序非常大,并且有问题的代码行只是一个 if 语句。
这可能是分支预测问题吗?这肯定与编译器有关吗?
最佳答案
如果您有一个条件语句控制该行的执行流程...(该行包含在 if 中)...那么运行您的程序的 CPU 中可能会发生一些分支预测。 即使没有分支预测问题,每次也必须测试条件。
如果这是关于调试打印,请更改为使用预处理器逻辑,以便在不进行调试时语句和周围的 if 分支永远不会编译到生成的可执行文件中。 大致如下:
#ifdef DEBUG
your_statement_here
#endif
缺点是您无法在运行时打开和关闭调试,但您想要性能,对吗? :)
关于未执行的代码会减慢程序速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31538094/