VS2013 启动缓慢的原因分析和解决方法

摘要:Visual studio 2013相对于VS2010做了很多改进,支持C++11. 但也有一些副作用,给我们带来不便。作者发现一个VS2013的一个严重问题,在一定的情况下,VS2013的启动非常缓慢,并拖慢了整个系统。本文梳理和分析了这个问题,并给出应对方案。

近来,我将VS2010换到2013,以支持Qt的32位和64位编译。但是在换到VS2013后,发现几个问题。1.之前可被VS2010正确编译的工程文件不能编译通过,见博主的文章http://blog.csdn.net/liangbch/article/details/79579953。另外,我发现VS2013的启动非常缓慢,进而拖慢了整个系统,包括输入汉字,打开一个文件夹都非常慢,但是打开任务管理器,发现CPU的占用率并不高。折腾了2天,包括用360优化系统,硬盘整理,关掉内存占用率高的服务等,但这一切都没有明显的效果。最后,我在打开VS2013的时候,同时监控内存占用和磁盘活动,终于找到了系统变慢的根本原因。原来VS2013在启动的时候,会执行预加载功能,系统自动地把工程文件所在的文件夹甚至上级文件夹的所有文件读入内存,在预加载期间,使用了大量的磁盘和内存资源,进而拖慢了整个windows。下面的截图显示了VS2013启动的过程中,系统的一些资源占用情况。

   先交代背景信息。

   1.电脑配置。
    我的电脑有8G内存,操作系统为64位win7。

    2.工程文件目录的特点。

    2.1 我的工程文件放在D:\lbc\sm_search\src目录下。
    2.2 在 D:\lbc\smr_search\src\generate_task目录下包含了2个较大的数据文件,总大小超过2GB。
    2.3 在工作目录D:\lbc\sm_search\work_1110下存放了大约下有400多个文件,总计500M以上.  

 启动VS2013过程中的截图。

 可以看到,在启动VS2013之前,可用内存很多。


启动Visual studio 2013之后,打开资源监视器,可以看到一个PID=4的系统进程在读取工程文件夹下的一个大文件,时间点是10:45



1分钟后,仍然读文件



2分钟后,进程ID为4的另一个线程开始读取 另一个文件大文件。第一个文件的读取速度达到19M/sec


又过了1分钟,进程ID为4的进程开启了更多的子线程,读取其他目录下.txt文件


2分钟后(10:51),检查内存,发现备用内存已经增加到4836MB,可用内存几乎用光。怀疑VS2013预读取了大量文件,将其存入备用内存。



解决办法。首先尝试关闭预加载功能,在选项菜单中没有发现任何选项可关闭预加载功能。我尝试 禁用隐式文件,禁用导航到缓冲预加载,可没有作用。方法是:打开选项菜单,打开“文本编辑器”=》“C/C++”=》“高级”。将“禁用隐式文件”和“禁用导航到缓冲预加载”这两项都设置为True.那么方法就只剩一个了。将工作目录和源代码目录分开存放。保持源代码目录下没有太多的无关的文件,但这样调试起来就不太方便了。如那位读者有更好的方法,请告诉我。


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值