首页云计算 正文

调整gcc CPU参数优化代码编译

2024-11-19 5 0条评论
  1. 首页
  2. 证书相关
  3. 调整gcc CPU参数优化代码编译

调整gcc CPU参数优化代码编译

发布日期:2017-03-01

一般情况下,用户选择安装方式为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优化参数。

  1. # cat /proc/cpuinfo
  2. processor       : 0
  3. vendor_id       : GenuineIntel
  4. cpu family      : 6
  5. model           : 45
  6. model name      : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
  7. stepping        : 7
  8. microcode       : 0x70d
  9. cpu MHz         : 2600.038
  10. cache size      : 20480 KB
  11. physical id     : 0
  12. siblings        : 8
  13. core id         : 0
  14. cpu cores       : 1
  15. apicid          : 0
  16. initial apicid  : 0
  17. fpu             : yes
  18. fpu_exception   : yes
  19. cpuid level     : 13
  20. wp              : yes
  21. flags           : fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm ida arat epb pln pts dtherm
  22. bogomips        : 5200.07
  23. clflush size    : 64
  24. cache_alignment : 64
  25. address sizes   : 46 bits physical, 48 bits virtual
  26. power management:

从cupinfo的信息可以看出,支持sse/sse2/mmx这些GCC的flag,

查看gcc参数优化选项参考文档:[英文、中文]。

我这里的操作系统是64位,在编译源码之前执行如下代码即可调整gcc参数

  1. export CHOST=“x86_64-pc-linux-gnu”
  2. export CFLAGS=“-march=nocona -O3 -pipe -fomit-frame-pointer”
  3. export CXXFLAGS=“${CFLAGS}”

注意:gcc-4.2以上版本支持 -march=native 参数,gcc会自动选择最适合cpu的优化

-march=native 让它自己判断,是否支持native用下面的命令看看结果是否正常,和文档获取的参数不大相同

  1. # touch o.c;gcc -v -march=native o.c 2>&1 | grep -o -- "-march[^ ]*" && rm -rf o.c
  2. -march=core2
标签: linux 运维教程

上一篇:使用socket方式连接Nginx优化php-fpm性能

下一篇:浅谈Linux内存管理机制

相关新闻

  • SSL证书对网站访问速度有影响吗
  • 个人隐私数据泄露有哪些危害?如何预防?
  • 部署SSL证书有哪些常见的错误
  • 国际证书、国产证书和国密证书
  • 游戏开发为什么离不开代码签名?
  • 僵尸网络攻击手法与防范方式
  • SSL证书助力保障网络数据安全
  • 网站加密与不加密区别
  • SSL证书有哪些类型和价格差异
  • ca机构颁发的证书包括那些内容呢?
文章版权及转载声明

本文作者:admin 网址:http://news.edns.com/post/112539.html 发布于 2024-11-19
文章转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码