仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 493|回复: 10
打印 上一主题 下一主题

[其他Linux] 来谈谈:Linux程序编译速率进步办法

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 11:19:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
给你装的系统里为ubuntu12.04,它已经封装的很臃肿了,但是考虑到你没有很多时间投入其中,所以给你装了它,但是怎么用它提高开发效率,需要你在学习的过程中不断总结;
项目愈来愈年夜,每次必要从头编译全部项目都是一件很华侈工夫的事变。Research了一下,找到以下能够匡助进步速率的办法,总结一下。
  tmpfs
  有人说在Windows下用了RAMDisk把一个项目编译工夫从4.5小时削减到了5分钟,大概这个数字是有点夸大了,不外粗想一想,把文件放到内存上做编译应当是比在磁盘上快多了吧,特别假如编译器必要天生良多一时文件的话。
  这个做法的完成本钱最低,在Linux中,间接mount一个tmpfs就能够了。并且对所编译的工程没有任何请求,也不必修改编译情况。
  mount-ttmpfstmpfs~/build-osize=1G
  用2.6.32.2的LinuxKernel来测试一下编译速率:
  用物理磁盘:40分16秒
  用tmpfs:39分56秒
  呃……没甚么变更。看来编译慢很年夜水平上瓶颈其实不在IO下面。但关于一个实践项目来讲,编译过程当中大概还会有打包等IO麋集的操纵,以是只需大概,用tmpfs是无益有害的。固然关于年夜项目来讲,你必要有充足的内存才干包袱得起这个tmpfs的开支。
  make-j
  既然IO不是瓶颈,那CPU就应当是一个影响编译速率的主要要素了。
  用make-j带一个参数,能够把项目在举行并行编译,好比在一台双核的呆板上,完整能够用make-j4,让make最多同意4个编译命令同时实行,如许能够更无效的使用CPU资本。
  仍是用Kernel来测试:
  用make:40分16秒
  用make-j4:23分16秒
  用make-j8:22分59秒
  由此看来,在多核CPU上,得当的举行并行编译仍是能够分明进步编译速率的。但并行的义务不宜太多,通常为以CPU的中心数量的两倍为好。
  不外这个计划不是完整没有cost的,假如项目标Makefile不标准,没有准确的设置好依附干系,并行编译的了局就是编译不克不及一般举行。假如依附干系设置过于守旧,则大概自己编译的可并行度就下落了,也不克不及获得最好的效果。
  ccache
  ccache用于把编译的两头了局举行缓存,以便在再次编译的时分能够节俭工夫。这关于玩Kernel来讲其实是再好不外了,由于常常必要修正一些Kernel的代码,然后再从头编译,而这两次编译年夜部分器材大概都没有产生变更。关于平常开辟项目来讲,也是一样。为何不是间接用make所撑持的增量编译呢?仍是由于实际中,由于Makefile的不标准,极可能这类“伶俐”的计划基本不克不及一般事情,只要每次makeclean再make才行。
  安装完ccache后,能够在/usr/local/bin下创建gcc,g++,c++,cc的symboliclink,链到/usr/bin/ccache上。总之确认体系在挪用gcc等命令时会挪用到ccache就能够了(一般情形下/usr/local/bin会在PATH中排在/usr/bin后面)。
  持续测试:
  用ccache的第一次编译(make-j4):23分38秒
  用ccache的第二次编译(make-j4):8分48秒
  用ccache的第三次编译(修正多少设置,make-j4):23分48秒
  看来修正设置(我改了CPU范例...)对ccache的影响是很年夜的,由于基础头文件产生变更后,就招致一切缓存数据都有效了,必需重头来做。但假如只是修正一些.c文件的代码,ccache的效果仍是相称分明的。并且利用ccache对项目没有出格的依附,布署本钱很低,这在一样平常事情中很有用。
  能够用ccache-s来检察cache的利用和射中情形:
  cachedirectory/home/lifanxi/.ccachecachehit7165cachemiss14283calledforlink71notaC/C++file120noinputfile3045filesincache28566cachesize81.7
12下一页


开发linux发行版的人都是通读过linux内核代码,对linux原理极其精通的人。
若相依 该用户已被删除
沙发
 楼主| 发表于 2015-1-16 12:24:56 | 只看该作者

来谈谈:Linux程序编译速率进步办法

在linux中学习命令的最好办法是学习Shell脚本编程,Shell脚本比起其他语言来学习简单,但是功能却十分强大.通过学习Shell编程,能让你掌握大量的linux命令。
Mbytesmaxcachesize976.6Mbytes</P>  能够看到,明显只要第二编次译时cache射中了,cachemiss是第一次和第三次编译带来的。两次cache占用了81.7M的磁盘,仍是完整能够承受的。
  distcc
  一台呆板的才能无限,能够团结多台电脑一同来编译。这在公司的一样平常开辟中也是可行的,由于大概每一个开辟职员都有本人的开辟编译情况,它们的编译器版本通常为分歧的,公司的收集也一般具有较好的功能。这时候就是distcc大显神通的时分了。
  利用distcc,其实不像设想中那样请求每台电脑都具有完整分歧的情况,它只需求源代码能够用make-j并行编译,而且介入散布式编译的电脑体系中具有不异的编译器。由于它的道理只是把预处置好的源文件分发到多台盘算机上,预处置、编译后的方针文件的链接和别的除编译之外的事情仍旧是在倡议编译的主控电脑上完成,以是只需求倡议编译的那台呆板具有一套完全的编译情况就能够了。
  distcc安装后,能够启动一下它的服务:
  /usr/bin/distccd--daemon--allow10.64.0.0/16
  默许的3632端口同意来自统一个收集的distcc毗连。
  然后设置一下DISTCC_HOSTS情况变量,设置能够介入编译的呆板列表。一般localhost也介入编译,但假如能够介入编译的呆板良多,则能够把localhost从这个列表中往失落,如许本机就完整只是举行预处置、分发和链接了,编译都在其余呆板上完成。由于呆板良多时,localhost的处置包袱很重,以是它就不再“兼职”编译了。
  exportDISTCC_HOSTS="localhost10.64.25.110.64.25.210.64.25.3"
  然后与ccache相似把g++,gcc等经常使用的命令链接到/usr/bin/distcc上就能够了。
  在make的时分,也必需用-j参数,通常为参数能够用一切参用编译的盘算机CPU内核总数的两倍做为并行的义务数。
  一样测试一下:
  一台双核盘算机,make-j4:23分16秒
  两台双核盘算机,make-j4:16分40秒
  两台双核盘算机,make-j8:15分49秒
  跟最入手下手用一台双核时的23分钟比拟,仍是快了很多的。假如有更多的盘算机到场,也能够失掉更好的效果。
  在编译过程当中能够用distccmon-text来检察编译义务的分派情形。distcc也能够与ccache同时利用,经由过程设置一个情况变量就能够做到,十分便利。
  总结一下:
  tmpfs:办理IO瓶颈,充实使用本机内存资本
  make-j:充实使用本机盘算资本
  distcc:使用多台盘算机资本
  ccache:削减反复编译不异代码的工夫
  这些工具的优点都在于布署的本钱绝对较低,综合使用这些工具,就能够悄悄松松的节俭相称可不雅的工夫。下面先容的都是这些工具最基础的用法,更多的用法能够参考它们各自的manpage。
</p>
上一页12


由于在linux中,用户权限很大,做任何事情都很自由,所以,你往往需要知道你做的每一步在干什么。
老尸 该用户已被删除
板凳
发表于 2015-1-18 15:27:40 | 只看该作者
要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。
若天明 该用户已被删除
地板
发表于 2015-1-27 06:44:24 | 只看该作者
就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-5 06:05:38 | 只看该作者
我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。
小魔女 该用户已被删除
6#
发表于 2015-2-11 07:45:38 | 只看该作者
熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。
飘灵儿 该用户已被删除
7#
发表于 2015-3-2 01:01:15 | 只看该作者
以前觉得Linux就跟dos一样,全是用命令窗口,相对于窗口界面来说多麻烦呀。
简单生活 该用户已被删除
8#
发表于 2015-3-11 01:59:34 | 只看该作者
linux鸟哥的私房菜,第三版,基础篇,网上有pdf下的,看它的目录和每章的介绍就行了,这个绝对原创!
再见西城 该用户已被删除
9#
发表于 2015-3-17 19:09:44 | 只看该作者
写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。
分手快乐 该用户已被删除
10#
发表于 2015-3-24 22:20:40 | 只看该作者
熟悉操作是日常学习Linux中的三大法宝。以下是作者学习Linux的一些个人经验,供参考:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 09:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表