|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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原理极其精通的人。 |
|