http://www.cnblogs.com/tinyfish/archive/2011/01/30/1947852.html
作为程序员,对机器的性能要求是无止境的。即使是当今最power的硬件,VC的编译时间仍然很长。真是怀念Delphi 5的秒编体验啊。以下针对各个方面,分开讲述性能优化的方法。基本上都是靠第三方软件或RMB可以达成的方法,操作难度不大。
硬件篇
首先还得说说硬件,毕竟是基础。CPU速度、内存大小、硬盘平均存取时间,是对编译速度影响最明显的硬件因素。
- VC支持多核,但仅针对多个工程同时编译,单个工程似乎没有效果。今年的CPU还是Intel强,I5 2300是个好选择,就是贵了点,I3 530便宜一半,适当超频也不错。
- 内存,这个也是优化的重点,价格便宜,优化余地大。4GB是起步,最好8GB,后面再慢慢解释。
- 硬 盘平均存取时间最重要,可以明显提升小文件的随机访问速度。所以单碟容量大、寻道速度快、缓存大的硬盘占优。SSD毫无疑问性能最强,寻道时间比温盘少两 个数量级!如果考虑成本,西数单碟640G黑盘,平均寻道11.x ms,64MB缓存,性能不错。看看SSD的速度提升:
操作系统篇
Windows 7在长期运行的性能和稳定性上都超越了Windows XP,值得推荐。至于Server操作系统,除了可以使用更大内存,其他方面提升不明显,何况内存还有破解补丁。
内存破解篇
前面提到配置8GB内存,在32位Windows系统上无法直接使用这么大的内存。其实32位系统完全可以使用128GB的内存,微软故意做了限制。就算只有4GB内存,也无法完全使用。我的内存浪费了整整5GB:
这内存钱就白花了……
ReadyFor4GB通过修改操作系统的核心文件,放开了内存大小的限制,让32位Windows可以使用最多128GB的内存:
这是破解之后的:
使用ReadyFor4GB有两个限制:
- 只能用在Vista、Windows 7以上的系统,不支持Windows XP。
- 某些硬件驱动不兼容,会导致蓝屏。如支持双显卡切换的驱动,我的笔记本禁用了后集显才能正常使用。
缓存给力篇
除了CPU速度,IO就是大多数电脑的性能瓶颈了。同等硬件下,提升性能最直接的方法就是缓存。配备超过4GB的内存,为的就是缓存。我在升级8GB内存后,应用程序的响应速度提升明显,多开VS也很流畅。
Windows在读缓存上效果不错,但是写缓存的设置比较保守。而编译正好需要生成大量文件,写操作频繁。要提高写文件的效率,只好依赖第三方软件了。Super Speed出品的SuperCache是驱动级的cache软件,在Windows文件系统缓存和硬盘之间建立一层新的缓存,可以手工设定每个盘的缓存大小,以及写缓存的延迟时间:
使用后最明显的变化就是编译时硬盘的写操作少了很多,甚至完全没有,不论是编译速度,还是编译时做其他操作的响应速度,都有一定提升。没有测试数据,只能说个人体验不错。
SuperCache的另一个作用是针对SSD硬盘,减少了写操作的次数,提升了性能,延长了SSD的寿命。
SuperCache在网吧和服务器中都有不错的应用,实际疗效请Google。
内存真没有篇
如果电脑内存确实不大,也无法升级,那么可以考虑使用一些内存管理软件。这类软件可以更快的释放Windows的备用内存,给应用程序更多的可用内存。这类优化在Windows XP上更加明显,因为XP本身的内存管理存在缺陷。推荐使用Cacheman管理Windows Cache:
磁盘整理篇
磁盘碎片会明显的降低文件访问速度,特别是在经常更新源代码库和编译的工作环境中,所以磁盘整理软件是必须的。市面上的磁盘整理软件很多,商业的免费的开源的都有。Diskeeper和PerfectDisk历史悠久,技术牢靠,是其中的佼佼者。PerfectDisk的优势在于整理算法,可以减少磁盘整理的次数;而Diskeeper的优势在于防止产生碎片和优化的后台整理。安装后基本都不用设置,就能自动在空闲时整理磁盘。
VC篇
C++编译缓慢是不争的事实,多年来也积累了各种技术可以加快编译速度:
- 预编译头文件,VC创建工程时默认使用。效果勿用多说,必备。
- 增量编译和增量链接,VC默认在Debug配置中开启。
- 限制模板的使用,特别是复杂的嵌套模板。C++的模板是程序员的玩具,很容易玩过火。
- IncrediBuild分布式编译,对大量工程的编译速度提升明显。
网络篇
虽然网络速度不直接影响编译,但对于万事不明问Google的程序员来说,也是开发效率的重要一环。在ADSL环境中,cFosSpeed能够保障网络的响应速度,更能平衡多台电脑的带宽,避免下载导致网页浏览过慢的问题。
其他系统优化篇
Windows优化软件有不少,如Windows优化大师。这些软件的优化手段大同小异,实际性能提升有限,但某些优化可以带来更好的用户体验,如菜单响应速度等。也存在部分软件优化过度,导致系统运行不稳定,过犹不及。上面提到的Cacheman本身就有系统优化功能,优化后系统稳定,可以一试。