16
|
Erx_VB.NExT.Coder · 技术社区 · 15 年前 |
![]() |
1
8
我想你最好有一个更高的时钟双核。我认为VS(以及当今大多数应用程序)还没有充分利用多线程的优势。vs可能有几十个线程在运行,但我认为只有一部分操作真正利用了它们。VS实现的全部是在STA线程上运行的C++ COM组件,因此UI线程在很多场景中完成大部分的工作。事实上,作为VS2010的一部分,许多vs shell片段正在托管代码中重写,这将有助于打破这些古老的组件sta依赖性。正如其他人提到的,一些关键场景(如构建大型解决方案)已经充分利用了多个核心(msbuild并行工作良好),因此如果这些场景主导了您所关心的内容,那么更多的核心会更好。但是对于诸如IDE用户界面使用和后台编译之类的事情,我认为其中大部分仍然是单线程的。我有一个四核盒在工作,我很少看到VS2008使用超过25%的CPU资源。(我还没有认真使用VS2010来了解哪些场景更好,尽管我知道至少有一些场景更好。) |
![]() |
2
13
msbuild支持并行生成项目。Visual Studio 2008利用多个处理器 compile projects . |
![]() |
3
11
正如其他人所指出的,MSV2010确实使用了多个编译过程。尽管如此,它不会自动转换为大大缩短的编译时间。 我刚刚用一个中型C++项目做了一个测试(大约200个文件)。 它在3.4 GHz的双核上比2.8 GHz的四核上建立得更快。尽管双核处理器更便宜。(每个系统实际上都与4Gib DDR2 RAM相同)。 我还必须注意到,在编译期间,双核处理器的最大负载是70%。正如您所看到的,如果VS2010甚至不能完全加载2个内核,那么拥有4个或更多的内核又有什么意义呢? |
![]() |
4
6
忘记CPU。你能给你的机器带来的最大的性能提升就是一个固态驱动器。编译和后台进程(如resharper和intellisense)的IO强度非常高,以致于Visual Studio的主要瓶颈是IO。我从来没有见过vs最大的CPU,不管我是单核,双四核还是8核,就像现在这样。 更新 谢谢你的评论@erx…我对正在进行的确切过程不在行。但是,如果您考虑编译器为编译一个项目而进行的读取次数,您不会对IO命中感到惊讶。Visual Studio可能会将文件保存在内存中,但您是否注意到,当您生成项目并且有未保存的更改时,这些文件会在生成开始之前先保存?这说明msbuild编译器正在访问保存的文件,并且不使用内存文件。如果您在VS中关闭了一个文件,就不能保证该文件仍然在内存中,因为它可能已经被VS的内存管理清除了。所以编译器得到一个干净的副本是有意义的。这可以是成百上千个文件。然后是编译输出、nuget包读取、configgen脚本的写入( http://configgen.codeplex.com/ )你拿到照片了。 另外,我在某个地方读到IntelliSense对文件系统进行了大量的读写操作,因此如果您的硬盘速度较慢,这将对性能产生额外的影响。 诸如resharper之类的插件也会攻击文件系统,特别是在后台编译时。我决不主张删除Resharper,因为它是可用的最佳生产力工具。因此,我重申一下,如果你已经花了很多钱在一个有最新可用内核和大量RAM的新系统上,那么在一个新的SSD上花费几百美元/100英镑。你不会后悔的。 另外,看看斯科特·古思里的沼泽地。 http://weblogs.asp.net/scottgu/archive/2007/11/01/tip-trick-hard-drive-speed-and-visual-studio-performance.aspx 具体地说,我引用:“…在必要的时候权衡购买额外的CPU处理器速度,转而投资更快的磁盘”。如果有人知道,您会期望Visual Studio开发团队的负责人知道。 |
![]() |
5
2
|
![]() |
6
1
要考虑的问题是您在开发环境中使用虚拟化。无论Visual Studio是否使用多核,虚拟化都绝对可以使用多核。我有多个开发环境,每个环境都有自己的虚拟机。 |
![]() |
7
1
这个问题已经过编辑,提到了VS2012,但大多数答案可以追溯到它发布之前。VS2012将并行构建作为 standard feature . 因此,有更好的机会在一个有能力的CPU上轻松地利用更多的核心。然而,如前所述,如果您想要短的编译时间,快速硬盘驱动器是必不可少的,最好是高端SSD。 关于硬盘或CPU是否是更好的投资,有一些争论,但是改进两者都应该有很大的影响。在大多数市场上,开发人员的时间成本远远超过硬件成本,因此通常最好购买最好的CPU和硬盘驱动器。唯一需要考虑的是,收益递减的规律在最顶端。 引用有关基于VS2012的并行构建的文章:
|
![]() |
Karl · 如何引发PrintPage的事件? 2 年前 |
![]() |
Daniel · LINQ从列表的dataTable中提取部分匹配 2 年前 |
![]() |
limelatte · 如何在datagridview中屏蔽特定列? 2 年前 |
![]() |
Orsi · 选择嵌套列表的最大值和最小值。网 2 年前 |
![]() |
D T · 如何为Excel Com设置公式? 2 年前 |
![]() |
Lenin · 将数组中的每个元素与另一个数组中的相应元素相乘 2 年前 |