vs的编译器优化
㈠ 影响vs编译速度的因素有哪些
影响因素比较多:
1 文件的大小,文件大小指的是全部include展开后的大小。
2 文件数量,编译是一个一个文件进行的,所以你的工程的文件数量也有关系。
3 还有声明的复杂程度,复杂声明需要额外地计算。
4 最影响编译速度的估计是C++的模板,模板在编译的时候要进行推导,得到相应的结果,这个非常费时间。如果你是模板里还套了模板,那就比较慢了。
5 链接库的数量,链接很多库也会使得编译速度变慢。
6 inline函数展开,会使得代码膨胀,也会影响编译速度
7 debug模式编译要留符号表做调试,也会影响速度
8 release模式如果开了优化,编译优化会改变代码的某些结构,这也是拖慢编译器的一个重要因素。
㈡ VS 2010 C++编译器/链接器中新的基于配置的优化选项有哪些
PogoSafeMode关键字是一个新的基于配置的优化选项。可以使用PogoSafeMode关键字来指定开发者想使用安全模式还是快速模式来优化的应用程序。
㈢ 如何提高vs2010编译速度
如果你的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
㈣ vs2010 编译程序时间超长
vs2010是慢了些,我win7下最开始装的VS2010,编译时有点慢,但没有像你说的30分钟这么久,是不是你电脑也卡啊?vs2010编译慢是因为多了一些库。还有就是第一次编译时有点慢,应该是加载一些东西。
㈤ VS2013自带的编译器貌似优化了很多!是不是这样
编译时间长了,不是因为优化的更“多”更好了,而是编程软件大了,需要处理的事情多了。
当然,相对老版本来说,2013的编译确实有所优化,同样代码的exe,以同样参数编译,会小一些。当然。。。。这不是慢的原因和理由
㈥ 高手们来看看VS2010 中编译器设置都是什么意思(其实VS2008也差不多吧),谁能详细的给说一下,万分感谢了
这是C/C++编译优化设置部分
第一行,启用的优化等级,这里优化被禁止了
第二行,内联函数,表示是否展开,还是以函数形式存在
第三行,是否启用内部函数
使用内部函数的代码比较快,因为它们没有函数调用的系统开销。但由于创建了附
加代码,代码尺寸可能比较大。
第四行,优化方式,速度优先还是代码尺寸优先;通常会选择速度优先,现在尺寸已不是问题
第五行,是否禁止在调用堆上创建框架指针,以加快函数调用;堆内存分配算法需要时间
第六行,是否启用纤程安全的线程本地存储优化
第七行,是否启用全局链接时代码优化;指的是生成具体指令过程推迟到链接的时候,这样有
助于具体的一些优化,比如,函数内部变量,有些可以是寄存器变量,没必要再
栈里分配,寄存器访问比内存访问快很多,这些都依赖于函数的调用拓扑等关系。
㈦ 这是VS2010编译器优化吗怎么改
这个问题比较深, 所以只有哥来回答你了。
你说的问题在VS2008上也是相同的表现,这个是因为微软的库实现不是直接实现在你call的generate_n这个函数上的,而是有好几重转调,所以造成你即使对第一重调用的 模板函数用 引用去实例化,由于后面转调的函数都是使用值去实例化的,所以实际你得到的运行效果还是值语义的。
比如你call 函数 func1<A&>(), 但是由于func1<A&>() 调用了func2<A>(), 又继续调用了func3<A>(), 最后func3里操作的其实是一个值拷贝,所以影响不到外面的引用的对象。
哥去 微软报了个bug,里面写得比较细,你可以仔细看,http://connect.microsoft.com/VisualStudio/feedback/details/676282/vs-2010-sp1-doesnt-conform-to-the-c-standard-library-a-tutorial-and-reference
㈧ VS 系列的编译器编译速度 慢死了,怎么加快编译速度啊,真他妈垃圾啊,无法忍受了啊。不是我的配置差
编译速度慢?貌似没遇到过,要么你说的是运行速度?
㈨ 如何改变VS2010的编译器
改不了
不支持自己配置
如果你想使用其它编译器
那就只能把VS做编辑,不要用它编译 调试 运行
用你其它的编译器 去编译 运行。
㈩ visual C++ 的优化选项分别都是什么意思
Od:编译器不做优化,通常debug的使用这个编译选项
O1:代码最小,使用这个选项编译出来的二进制文件是最小的,但是可能会牺牲一些执行效率
O2:编译出来的代码执行速度最快,但是大小会比O1大(release默认)
Ox:对程序进行最大优化,可能会牺牲一些兼容性问题等,对执行速度和二进制文件大小都尽可能优化