2012-10-08 32 views
1

我目前正在研究嵌入式設備應用程序(C語言)。我應該使用哪個優化標記來編譯該應用程序,同時記住它只有96 MB的RAM。我應該使用哪個編譯標誌 - > Os或O2?

而且,請注意,在此應用中,我基本上預先處理JPEG圖像。那麼我應該使用哪個優化標誌?

此外,沒有剝離這個程序將會對效率和速度有什麼影響?

我運行此應用程序的操作系統是Linux 2.6.37。

+0

該應用程序是否適合96MB?什麼是剝離?從可執行文件或其他東西中刪除調試符號/信息? –

+1

請不要根據某人的意見選擇優化標誌。基準他們自己,並看看這種權衡是否值得。無論如何,根據您分享的信息量,任何人都無法提出有意義的建議。 – ArjunShankar

+1

另外,閱讀[this](http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html)。 – ArjunShankar

回答

1

-Os是優選的。不僅有RAM限制,而且CPU的高速緩存大小也受到限制,因此儘管使用較少的優化技術,但代碼可以更快地執行。

+3

你*正確的是,在某些情況下'-Os'更快。但我真的認爲標誌的最佳選擇只能在基準測試後進行。 「* -Os是最好的*」 - 我會說這是猜測,或者充其量,這是一個經驗法則,它可能會也可能不會總是一場勝利。 – ArjunShankar

+0

@ArjunShankar,好吧,對於那些描述OP的情況,「優選」。老實說,我不希望在這兩種優化之間看到有效的運行時間差異。代碼大小差異很大程度上取決於整體可執行文件.CODE節的大小。所以,這只是*一般*的問題,似乎適用於嵌入式。 – poige

2

通常優化會增加二進制大小。除了這對速度的影響根本不可預測,取決於您擁有的數據集。唯一的辦法是進行基準測試不同的標誌集的應用程序,而不僅僅是-O2-O3但你認爲可以提高應用程序的性能,因爲我相信你對程序做了什麼信息和其他可能的標誌它如何表現不同的投入。

性能取決於應用程序的性質,因此,我不認爲任何人都可以給你一個令人信服的答案哪個標誌可以給你更好的性能。

看那GCC optimization flags和分析算法,以便找到合適的標誌,然後決定使用哪一個。

相關問題