AndroidLinuxUnix 2007-09-22
针对系统的优化工作需要根据不同的系统采用不同的办法。本文旨在描述通用的优化 Linux 的一些办法。
一、编译选项
“etc/profile”文件含有系统大量的环境和启动程序的配置信息。你在该文件中进行的配置,可以通过申请全局环境变量来实现。因此,在该文件中设置优化标志,是一种明智的选择。要想使x86程序获得最佳性能,可以在编译时,使用最佳的优化选项-O9 。许多程序的“Makefile”文件中已经含有-O2选项,而-O9使编译器采用最高级别的优化。尽管它将增加最终程序的大小,但这样可以获得更高的运行速度。编译时,使用“-fomit-frame-pointer”选项,程序运行时,访问变量时将使用堆栈。但是,使用这一选项,生产的代码将无法调试。使用“-mcpu=cpu_type”和“-march=cpu_type”选项,Gcc将针对这种型号CPU进行专门的优化,但生成的代码只能在所指定的CPU或更高系列的CPU上运行。当我们采用 -O9来编译程序时,或许文件字节数是最大的,但是往往其运行速度也是最快的。根据不同的机器架构,你可以把下面的语句加入 /etc/profile 。
对于CPU i686或PentiumPro、Pentium II、Pentium III等:
CFLAGS='-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro
-march=pentiumpro -fomit-frame-pointer -fno-exceptions'
对于CPU i586或Pentium:
CFLAGS='-O3 -march=pentium -mcpu=pentium -ffast-math -funroll-loops
-fomit-frame-pointer -fforce-mem -fforce-addr -malign-double -fno-exceptions'
对于CPU i486:
FLAGS='-O3 -funroll-all-loops -malign-double -mcpu=i486 -march=i486
-fomit-frame-pointer -fno-exceptions'
在进行完以上设置之后,紧接着把“CFLAGS LANG LESSCHARSET”加入到“etc/profile”文件中的“export”行中:
export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL INPUTRC CFLAGS
LANG LESSCHARSET
然后,重新登录,这时,环境变量CFLAGS已经被赋值,编译器和其它配置工具可以使用它。对Pentium(Pro/II/III)的优化必须使用egcs或pgcc编译器。Linux的缺省安装中,已经装上了egcs,所以无需担心。
另外,安装程序时,使用 tarball 格式总要比 RPM 格式来得好,因为, tarball 需要重新编译,能针对你的机器架构作优化,得到最好的性能。
系统在经过一段时间的“折磨”后,都会越来越慢,因此优化系统已经是大家常常讨论的话题了,那么在使用红旗Linux系统时,一下优化的方法你是否尝试过呢?不过这一条可能会导致切换到后台任务时,切换速度稍慢。