一般情况下,用户选择安装方式为rpm包或者二进制压缩包,但是,通用安装包为了适应不同的软硬件平台,都会采用保守的源码编译方式,并使用特定的gcc参数可以使编译出的程序执行效率有较大提升。
gcc优化参数都是通过export命令设定CFLAGS和CXXFLAGS,然后configure的时候会自动读入,make的时候会自动使用所选的优化参数。
通过添加优化参数,让程序针对某个CPU型号和某个系统进行最大优化,减少文件大小、CPU使用率、内存使用率。优化后的程序,将不再具有跨系统跨平台的能力。
Alibaba大牛P.Linux通过调整gcc的编译参数,使MySQL 5.1.46sp1企业版,比Percona 5.1.47 Server性能高出15%,并非常稳定的运行在开发测试库上。
gcc CPU参数优化已经作为可选项添加到《lnmp最新源码一键安装包》
首先查看CPU信息,然后根据CPU信息到《Intel型号CPU的CFlags设置》、《AMD型号CPU的CFlags设置》去获取CPU优化参数。
#cat/proc/cpuinfo
processor:0
vendor_id:GenuineIntel
cpufamily:6
model:45
modelname:Intel(R)Xeon(R)CPUE5-26700@2.60GHz
stepping:7
microcode:0x70d
cpuMHz:2600.038
cachesize:20480KB
physicalid:0
siblings:8
coreid:0
cpucores:1
apicid:0
initialapicid:0
fpu:yes
fpu_exception:yes
cpuidlevel:13
wp:yes
flags:fpudetscmsrpaecx8sepcmovpatclflushmmxfxsrssesse2sshtsyscallnxlmconstant_tscrep_goodnoplnonstop_tscpnipclmulqdqssse3cx16sse4_1sse4_2x2apicpopcnttsc_deadline_timeraeshypervisorlahf_lmidaaratepbplnptsdtherm
bogomips:5200.07
clflushsize:64
cache_alignment:64
addresssizes:46bitsphysical,48bitsvirtual
powermanagement:
从cupinfo的信息可以看出,支持sse/sse2/mmx这些GCC的flag,
查看gcc参数优化选项参考文档:[英文、中文]。
我这里的操作系统是64位,在编译源码之前执行如下代码即可调整gcc参数
注意:gcc-4.2以上版本支持 -march=native 参数,gcc会自动选择最适合cpu的优化
-march=native 让它自己判断,是否支持native用下面的命令看看结果是否正常,和文档获取的参数不大相同
#toucho.c;gcc-v-march=nativeo.c2>&1|grep-o--"-march[^]*"&&rm-rfo.c
-march=core2
猜你喜欢