导航:首页 > 源码编译 > cpu和编译速度

cpu和编译速度

发布时间:2022-04-27 18:49:44

Ⅰ 脚本编译速度和CPU有关吗

有关的。CPU越强大,编译越快咯,软件的编译也是这样,做大工程的点完编译就可以泡杯咖啡慢慢喝了

Ⅱ 如何加快linux android 的编译速度

项目越来越大,每次需要重新编译整个项目都是一件很浪费时间的事情。Research了一下,找到以下可以帮助提高速度的方法,总结一下。
1. 使用tmpfs来代替部分IO读写
2.ccache,可以将ccache的缓存文件设置在tmpfs上,但是这样的话,每次开机后,ccache的缓存文件会丢失
3.distcc,多机器编译
4.将屏幕输出打印到内存文件或者/dev/null中,避免终端设备(慢速设备)拖慢速度。

tmpfs
有人说在Windows下用了RAMDisk把一个项目编译时间从4.5小时减少到了5分钟,也许这个数字是有点夸张了,不过粗想想,把文件放到内存上做编译应该是比在磁盘上快多了吧,尤其如果编译器需要生成很多临时文件的话。
这个做法的实现成本最低,在Linux中,直接mount一个tmpfs就可以了。而且对所编译的工程没有任何要求,也不用改动编译环境。
mount -t tmpfs tmpfs ~/build -o size=1G
用2.6.32.2的Linux Kernel来测试一下编译速度:
用物理磁盘: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工作原理:
ccache也是一个编译器驱动器。第一趟编译时ccache缓存了GCC的“-E”输出、编译选项以及.o文件到$HOME/.ccache。第二次编译时尽量利用缓存,必要时更新缓存。所以即使"make clean; make"也能从中获得好处。ccache是经过仔细编写的,确保了与直接使用GCC获得完全相同的输出。

ccache用于把编译的中间结果进行缓存,以便在再次编译的时候可以节省时间。这对于玩Kernel来说实在是再好不过了,因为经常需要修改一些Kernel的代码,然后再重新编译,而这两次编译大部分东西可能都没有发生变化。对于平时开发项目来说,也是一样。为什么不是直接用make所支持的增量编译呢?还是因为现实中,因为Makefile的不规范,很可能这种“聪明”的方案根本不能正常工作,只有每次make clean再make才行。
安装完ccache后,可以在/usr/local/bin下建立gcc,g++,c++,cc的symbolic link,链到/usr/bin/ccache上。总之确认系统在调用gcc等命令时会调用到ccache就可以了(通常情况下/usr/local /bin会在PATH中排在/usr/bin前面)。
安装的另外一种方法:
vi ~/.bash_profile
把/usr/lib/ccache/bin路径加到PATH下
PATH=/usr/lib/ccache/bin:$PATH:$HOME/bin
这样每次启动g++的时候都会启动/usr/lib/ccache/bin/g++,而不会启动/usr/bin/g++
效果跟使用命令行ccache g++效果一样
这样每次用户登录时,使用g++编译器时会自动启动ccache
继续测试:
用ccache的第一次编译(make -j4):23分38秒
用ccache的第二次编译(make -j4):8分48秒
用ccache的第三次编译(修改若干配置,make -j4):23分48秒

看来修改配置(我改了CPU类型...)对ccache的影响是很大的,因为基本头文件发生变化后,就导致所有缓存数据都无效了,必须重头来做。但如果只是修改一些.c文件的代码,ccache的效果还是相当明显的。而且使用ccache对项目没有特别的依赖,布署成本很低,这在日常工作中很实用。
可以用ccache -s来查看cache的使用和命中情况:
cache directory /home/lifanxi/.ccachecache hit 7165cache miss 14283called for link 71not a C/C++ file 120no input file 3045files in cache 28566cache size 81.7 Mbytesmax cache size 976.6 Mbytes
可以看到,显然只有第二编次译时cache命中了,cache miss是第一次和第三次编译带来的。两次cache占用了81.7M的磁盘,还是完全可以接受的。
distcc
一台机器的能力有限,可以联合多台电脑一起来编译。这在公司的日常开发中也是可行的,因为可能每个开发人员都有自己的开发编译环境,它们的编译器版本一般是一致的,公司的网络也通常具有较好的性能。这时就是distcc大显身手的时候了。
使用distcc,并不像想象中那样要求每台电脑都具有完全一致的环境,它只要求源代码可以用make -j并行编译,并且参与分布式编译的电脑系统中具有相同的编译器。因为它的原理只是把预处理好的源文件分发到多台计算机上,预处理、编译后的目标文件的链接和其它除编译以外的工作仍然是在发起编译的主控电脑上完成,所以只要求发起编译的那台机器具备一套完整的编译环境就可以了。
distcc安装后,可以启动一下它的服务:
/usr/bin/distccd --daemon --allow 10.64.0.0/16
默认的3632端口允许来自同一个网络的distcc连接。
然后设置一下DISTCC_HOSTS环境变量,设置可以参与编译的机器列表。通常localhost也参与编译,但如果可以参与编译的机器很多,则可以把localhost从这个列表中去掉,这样本机就完全只是进行预处理、分发和链接了,编译都在别的机器上完成。因为机器很多时,localhost的处理负担很重,所以它就不再“兼职”编译了。
export DISTCC_HOSTS="localhost 10.64.25.1 10.64.25.2 10.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: 减少重复编译相同代码的时间
这些工具的好处都在于布署的成本相对较低,综合利用这些工具,就可以轻轻松松的节省相当可观的时间。上面介绍的都是这些工具最基本的用法,更多的用法可以参考它们各自的man page。
5.还有提速方法是把屏幕输出重定向到内存文件或/dev/null,因对终端设备(慢速设备)的阻塞写操作也会拖慢速度。推荐内存文件,这样发生错误时,能够查看。

Ⅲ 同一程序前后两次运行时,cpu占用率相差很大

你好 你可以先尝试从其他机器运行编译程序 保证正确的 gcc 编译器安装配置 没有设置的错误 正确保存你的程序路径 如果还是同样问题 一般软件版本不正确 或者有bug判断软件自身问题 可尝试更改版本
如果其他机器没有出现这种情况 一般硬件在硬件方面可能主机bios不稳定 或主板南北桥故障 主板不稳定因素多 如果你运行其他大中型程序没有出现这种问题 比如 cad,proe,ps等软件能正常重复操作 这样硬件问题也可排除
在系统问题上 一般有系统文件丢失 机器存在病毒 都会造成应用程序运行不正常
整体上 找另一台机器 保证正确安装 并在软件设置上正确操作 如果不存在这样的问题 重装自用机器系统 排除系统问题 若重做系统问题依旧 硬件有问题
在其他机器问题依旧 那有软件自身或操作不正确

Ⅳ 如何提高ISE的编译速度

如果你的cpu够强你应该学会如何利用好它来加速你的代码编译速度,那么你怎么才能够最大限度让你的cpu发烧呢?

下面是一个对比:

比如我的cpu是i7 3770k,

编译cocos2d-x的libcocos2d工程:

不优化:

1>Time Elapsed 00:01:35.25

优化后:

1>Time Elapsed 00:00:21.66

效果显着!!!

参考网页:

Visual Studio 2010中C++并行构建调优(1)
http://developer.51cto.com/art/201003/189235.htm

1>cl : Command line warning D9030: '/Gm' is incompatible with multiprocessing; ignoring /MP switch

解决办法是:

Properties -> Configuration Properties -> C/C++ -> Code Generation -> Enable Minimal Rebuild -> No(/Gm-)

Properties -> Configuration Properties -> C/C++ -> Geneal -> Multi-processor Compilation -> Yes(/MP)

一些含义和拓展资料:

Enable minimal rebuild
通过保存关联信息到.IDB文件,使编译器只对最新类定义改动过的源文件进行重编译,提高编译速度

Enable Incremental Compilation
同样通过.IDB文件保存的信息,只重编译最新改动过的函数

/MP (Build with Multiple Processes)

http://msdn.microsoft.com/en-us/library/bb385193.aspx

/Gm (Enable Minimal Rebuild)

http://msdn.microsoft.com/en-us/library/kfz8ad09.aspx

Ⅳ 四核的CPU比双核的CPU编译速度是不是快

不一定。
看具体型号具体性能。
CPU不是核心多就性能高。

Ⅵ 程序的编译速度与程序的执行速度

执行与编译。。也有挂钩!。。执行、编译速度又跟硬件有关!用 WEB来说 第一次编译比较慢!后面这次访问就快多了!这跟缓存有关。。还有就是代码的问题。。 多次的循环判断也会造成系统执行变慢!。。在提升速度方面 主要就是俩种方法 1.完善的代码 2.提高硬件了!可能我说的比较片面!别的兄弟可以继续补充!

Ⅶ 编译一段代码的速度和CPU的线程核心和代码的速度有关吗如果编译一个QQ大小的代码需要多长时间啊

1cpu的速度跟核心数量有关吗?是否数量越多就越快呢?只有在同一家族的CPU中进行比较,核心数量、主频与CPU的运行速度才有正比关系,还有影响的因素是2、3级缓存的大小。核心版本和工艺的升级也有影响。一般在同一家族的CPU中,核心越多、主频越高、缓存越多、版本越新的CPU越快。比如AMDAthlonIIX2250肯定要比AMDAthlonIIX2240要快,但是不是也一定强于主频、缓存、核心数都与X2240差不多的IntelPentiumE6300呢?那就不能武断的说了。需要用各种测试软件去验证。2同核心数目,同主频,同二级缓存哪个快?主板配cpu是看针脚和前端总线,和cpu的二级缓存无关,865的主板如果是478接口的,那就支持P42.8E和P43.2C,何况主板和cpu前端总线都是800mhz,完美支持两个比当然是P43.2C好了,虽然P42.8e是1024的二级缓存,但核心是Prescott内核,和A的核心一样,发热量大,功耗高,而C的核心是NORTHWOOD核心,比Prescott好

Ⅷ 学C++电脑的CPU需不需要很好

现在cpu性能是过剩的,主流cpu足够使用。

现在主要制约编译速度的是内存以及硬盘速度,建议配置大内存以及ssd(机械硬盘编译速度与ssd相差一倍,主要是读取与写入编译产生的中间文件消耗时间)
因为可能需要多开vc工程与调试程序,所以大内存保证了不会报内存不足的错误(深受其害,之前用6G内存经常报内存不足,后来换了16G才愉快玩耍)

Ⅸ CPU速度快慢主要看哪些

主频=外频*倍频
超频常常是说超
外频
频率是直接影响CPU与内存直接数据交换速度,
决定数据流动快慢
缓存是处理数据时暂时用的存储空间,
一般的缓存的速度会比内存快几倍
缓存越大意味着可以更少的和内存进行数据交换,
可以大大提高性能,
同一颗cpu超频的话,超外频比超倍频更能提升系统性能。
具体资料如下
CPU的外频
通常为系统总线的工作频率(系统时钟频率),CPU与周边设备传输数据的频率,具体是指CPU到芯片组之间的总线速度。外频是CPU与主板之间同步运行的速度,而且目前的绝大部分电脑系统中外频,也是内存与主板之间的同步运行的速度,在这种方式下,可以理解为CPU的外频直接与内存相连通,实现两者间的同步运行状态。
在486之前,CPU的主频还处于一个较低的阶段,CPU的主频一般都等于外频。而在486出现以后,由于CPU工作频率不断提高,而PC机的一些其他设备(如插卡、硬盘等)却受到工艺的限制,不能承受更高的频率,因此限制了CPU频率的进一步提高。因此出现了倍频技术,该技术能够使CPU内部工作频率变为外部频率的倍数,从而通过提升倍频而达到提升主频的目的。倍频技术就是使外部设备可以工作在一个较低外频上,而CPU主频是外频的倍数。
在Pentium时代,CPU的外频一般是60/66MHz,从Pentium

350开始,CPU外频提高到100MHz,目前CPU外频已经达到了200MHz。由于正常情况下CPU总线频率和内存总线频率相同,所以当CPU外频提高后,与内存之间的交换速度也相应得到了提高,对提高电脑整体运行速度影响较大。
CPU的倍频全称是倍频系数
倍频系数是指CPU主频与外频之间的相对比例关系。在相同的外频下,倍频越高CPU的频率也越高。但实际上,在相同外频的前提下,高倍频的CPU本身意义并不大。这是因为CPU与系统之间数据传输速度是有限的,一味追求高倍频而得到高主频的CPU就会出现明显的“瓶颈”效应——CPU从系统中得到数据的极限速度不能够满足CPU运算的速度。
CPU的核心工作频率与外频之间存在着一个比值关系,这个比值就是倍频系数,简称倍频。理论上倍频是从1.5一直到无限的,但需要注意的是,倍频是以0.5为一个间隔单位。外频与倍频相乘就是主频,所以其中任何一项提高都可以使CPU的主频上升。
原先并没有倍频概念,CPU的主频和系统总线的速度是一样的,但CPU的速度越来越快,倍频技术也就应允而生。它可使系统总线工作在相对较低的频率上,而CPU速度可以通过倍频来无限提升。那么CPU主频的计算方式变为:主频
=
外频
x
倍频。也就是倍频是指CPU和系统总线之间相差的倍数,当外频不变时,提高倍频,CPU主频也就越高。
一个CPU默认的倍频只有一个,主板必须能支持这个倍频。因此在选购主板和CPU时必须注意这点,如果两者不匹配,系统就无法工作。此外,现在CPU的倍频很多已经被锁定,无法修改。
CPU缓存(Cache
Memory)
位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。由此可见,在CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的。
缓存是为了解决CPU速度和内存速度的速度差异问题。内存中被CPU访问最频繁的数据和指令被复制入CPU中的缓存,这样CPU就可以不经常到象“蜗牛”一样慢的内存中去取数据了,CPU只要到缓存中去取就行了,而缓存的速度要比内存快很多。
这里要特别指出的是:
1.因为缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速度就慢下来了,不过CPU会把这些数据复制到缓存中去,以便下一次不要再到内存中去取。
2..因为随着时间的变化,被访问得最频繁的数据不是一成不变的,也就是说,刚才还不频繁的数据,此时已经需要被频繁的访问,刚才还是最频繁的数据,现在又不频繁了,所以说缓存中的数据要经常按照一定的算法来更换,这样才能保证缓存中的数据是被访问最频繁的。
总线
是将计算机微处理器与内存芯片以及与之通信的设备连接起来的硬件通道。前端总线将CPU连接到主内存和通向磁盘驱动器、调制解调器以及网卡这类系统部件的外设总线。人们常常以MHz表示的速度来描述总线频率。
前端总线(FSB)
频率是直接影响CPU与内存直接数据交换速度。由于数据传输最大带宽取决于所有同时传输的数据的宽度和传输频率,即数据带宽=(总线频率×数据位宽)÷8。目前PC机上所能达到的前端总线频率有266MHz、333MHz、400MHz、533MHz、800MHz,1066MHz,1333MHz几种,前端总线频率越大,代表着CPU与内存之间的数据传输量越大,更能充分发挥出CPU的功能。现在的CPU技术发展很快,运算速度提高很快,而足够大的前端总线可以保障有足够的数据供给给CPU。较低的前端总线将无法供给足够的数据给CPU,这样就限制了CPU性能得发挥,成为系统瓶颈。
外频与前端总线频率的区别:前端总线的速度指的是数据传输的速度,外频是CPU与主板之间同步运行的速度。也就是说,100MHz外频特指数字脉冲信号在每秒钟震荡一千万次;而100MHz前端总线指的是每秒钟CPU可接受的数据传输量是100MHz×64bit=6400Mbit/s=800MByte/s(1Byte=8bit)。
主板支持的前端总线是由芯片组决定的,一般都带有足够的向下兼容性。如865PE主板支持800MHz前端总线,那安装的CPU的前端总线可以是800MHz,也可以是533MHz,但这样就无法发挥出主板的全部功效。

Ⅹ 编译程序所需要的时间和电脑的性能有关系么

有关系的
当需要编译工程的复杂度一定的时候,电脑性能越好,编译所需要时间越短;反之,则时间越长。
当电脑性能一定的时候,工程越复杂,则编译所需要的时间越长;反之,则时间越短。

阅读全文

与cpu和编译速度相关的资料

热点内容
金融结算法补充条款 浏览:289
什么叫服务器怎么连接 浏览:519
空调压缩机有制冷但室内不是很冷 浏览:837
如何查解压成功 浏览:647
代码编译服务器硬件配置2021 浏览:413
php如何选中相同的进行修改 浏览:623
工行app个人怎么给企业账户转账 浏览:149
汇编与程序员 浏览:666
压缩包解码器下载 浏览:130
爱旅行的预备程序员 浏览:111
安卓qq浏览器怎么转换到ios 浏览:292
不同编译器的库可以调用吗 浏览:455
灰度信托基金加密 浏览:421
宿迁程序员兼职网上接单 浏览:925
电视编译器怎么设置 浏览:278
手机如何解压汉字密码的压缩包 浏览:703
为什么很多程序员爱用vim 浏览:830
安卓手机怎么连接宝华韦健音响 浏览:559
12星座制作解压球 浏览:871
java调用oracle数据 浏览:829