2015-07-21 83 views
-4

我有一行代码是在if语句中,目前从未配置过。它大量减慢我的程序。这只是一个打印语句,但是如果我只是在这个语句中声明一个变量,它会完美运行。我不明白,因为这行代码永远不会执行,所以它为什么会减慢我的程序。代码没有执行减慢程序

对不起,代码的缺乏,但程序是非常大的,所涉及的代码行只是一个if语句。

这可能是一个分支预测问题。这肯定与编译器有关吗?

+5

'我有一行代码'..care向我们展示? –

+5

也许还包括它的一些线:) – citywall

+2

到目前为止这是一个非常糟糕的问题...希望你可以稍后编辑它(例如邮政编码)。 – WhatsUp

回答

1

如果你有一个条件语句来控制这条线的执行流程......(包裹在if中的行)......那么在运行你的程序的CPU中可能会发生一些分支预测。 即使没有分支预测问题,每次都必须测试条件。

如果这涉及调试打印,请更改为使用预处理器逻辑,以便在您未调试时,语句和周围的if-branch永远不会编译到生成的可执行文件中。 东西在的线:

#ifdef DEBUG 
your_statement_here 
#endif 

的缺点是,你不能切换运行时的调试和关闭,但你想要的性能,对不对? :)