天天看點

《編寫高品質代碼:改善c程式代碼的125個建議》——建議21:适當地使用并行代碼來優化for循環

本節書摘來自華章計算機《編寫高品質代碼:改善c程式代碼的125個建議》一書中的第3章,建議21,作者:馬 偉 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

在實際程式設計中,盡量把長的有依賴的代碼鍊分解成幾個可以在流水線執行單元中并行執行的沒有依賴的代碼鍊,如下面的示例代碼所示:

很顯然,在上面的代碼中要執行100次for循環語句。然而,對于這樣的代碼,我們可以使用分解成多路的形式進行優化。在這裡,我們選擇将上面的程式分解成4路,即使用4段流水線浮點加法,浮點加法的每一個段占用一個時鐘周期,進而保證最大的資源使用率,如下面的示例代碼所示:

最後還需要說明的是,由上面的代碼可以看出,因為浮點數的精确度問題,在一些情況下,這些優化可能會導緻意料之外的結果。但在大部分情況下,最後結果可能隻有最低位存在錯誤。是以,對計算結果正确性的影響不大。

繼續閱讀