2012-10-08 29 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和分析算法,以便找到合适的标志,然后决定使用哪一个。

相关问题