2012-10-17 36 views
5

在我正在開發的一個項目中,我試圖優化一個大文件中的四重嵌套循環,我認爲這將從編譯器中受益 - 展開使用-funroll-全循環。但是,當我將此標誌添加到編譯器時,它會將其他循環展開到文件的其餘部分,並使整個程序運行速度更慢。有沒有辦法(可能通過#pragma)將編譯器標誌僅應用於文件中的某些函數而不是整個文件?GCC - 僅在特定功能上啓用編譯器標誌

在此先感謝。

+1

也許真正的問題是4個嵌套循環... – Joe

回答

1

我會建議將該特定功能移到單獨的.c文件中,該文件可以使用您想要使用的額外選項進行編譯。這可能需要創建一個「foo_private.h」風格的頭現有的.c文件,而新的,讓他們共享已聲明爲static原.c文件

6

海合會function attributeoptimize任何變量之間共享可用於爲單個功能設置優化選項:

void foo(int bar) __attribute__((optimize ("unroll-all-loops"))) 
{ 
} 
相關問題