2015-07-21 82 views
-4

我有一行代碼是在if語句中,目前從未配置過。它大量減慢我的程序。這只是一個打印語句,但是如果我只是在這個語句中聲明一個變量,它會完美運行。我不明白,因爲這行代碼永遠不會執行,所以它爲什麼會減慢我的程序。代碼沒有執行減慢程序

對不起,代碼的缺乏,但程序是非常大的,所涉及的代碼行只是一個if語句。

這可能是一個分支預測問題。這肯定與編譯器有關嗎?

+5

'我有一行代碼'..care向我們展示? –

+5

也許還包括它的一些線:) – citywall

+2

到目前爲止這是一個非常糟糕的問題...希望你可以稍後編輯它(例如郵政編碼)。 – WhatsUp

回答

1

如果你有一個條件語句來控制這條線的執行流程......(包裹在if中的行)......那麼在運行你的程序的CPU中可能會發生一些分支預測。 即使沒有分支預測問題,每次都必須測試條件。

如果這涉及調試打印,請更改爲使用預處理器邏輯,以便在您未調試時,語句和周圍的if-branch永遠不會編譯到生成的可執行文件中。 東西在的線:

#ifdef DEBUG 
your_statement_here 
#endif 

的缺點是,你不能切換運行時的調試和關閉,但你想要的性能,對不對? :)