Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Question
Friday, August 11, 2017 11:16 PM
Hi.
I am planning to build a new PC by the end of this year and with the new processors in the market that are powerful and expensive, I do not want to get a overkill that i will not be using on the daily basis in Visual Studio 2017 (no streaming, no video editing, no 3D rendering and similar creator tasks).
I could not find any specifics on the architecture of Visual Studio 2017 and how and which parts of Visual Studio 2017 benefit from multi core processors, here are some questions I would like to get the answers to. The setup is a 20 projects WPF(XAML)/C# solution in Visual Studio 2017 with Resharper installed on Windows 10. No virtual machines. Assuming I have a fast SSD and 32 GB of RAM.
1. Is VS 2017 optimized mostly for Intel rather than something AMD specific?
2. Is single-threaded performance more important than extra cores in Visual Studio 2017?
3. Will it benefit from having more than 6 cores (8, 10, 12, 16 ...)
4. Is XAML designer optimized for multi-core?
5. How do different parts/windows of Visual Studio (Error List, Watch, Stack Trace, Performance, Output, etc). Do they benefit from multi-core?
6. Will plugins (like R#) benefit from multi-core?
7. Is quad channel memory vs dual channel memory something to take into consideration when working in Visual Studio?
8. How does the story change when running 2 instances of Visual Studio 2017, the second one lets say a WCF project that is servicing the first WPF project?
Thanks!
All replies (10)
Monday, August 14, 2017 6:12 AM | 1 vote
Hi Tridy,
One thread one question. Please ask one question in one thread next time. Thanks.
>> 1. Is VS 2017 optimized mostly for Intel rather than something AMD specific?
According to the Visual Studio 2017 System Requirement, it doesn't have any requirement for specific processor. So I don't think VS2017 will optimized mostly for Intel rather than other specific processor.
>> 2. Is single-threaded performance more important than extra cores in Visual Studio 2017?
As far as I know, thread is a concept when coding. Single-threaded means the code running in one thread. And the cores means the computer core, which is hardware on machine. So could you explain me that why do you want to compare them and if misunderstanding, please provide more detailed information.
>> 3. Will it benefit from having more than 6 cores (8, 10, 12, 16 ...)
In Visual Studio 2017 IDE, we could set multiple processors build in Tools -> Options -> Projects and Solutions -> Build and Run -> maximum number of parallel project builds. Whether it is benefit, it is based on your project situation, please refer to following link which introduce different problems when using multiple Processors build.
/en-us/visualstudio/msbuild/using-multiple-processors-to-build-projects
>> 4. Is XAML designer optimized for multi-core?
According to below blog, Visual Studio 2017 improve XAML editing performance and faster switching between designer tabs for UWP and XAML developers, but it doesn't mentioned that it is related to the multi-core.
>> 5. How do different parts/windows of Visual Studio (Error List, Watch, Stack Trace, Performance, Output, etc). Do they benefit from multi-core?
As far as I know, these windows of Visual Studio used when debugging your code, no matter you debug your code on a multi-core machine or not, they all needed when debugging.
>> 6. Will plugins (like R#) benefit from multi-core?
R# is a third part plugin for Visual Studio, I suggest you ask this question to R# forum to get a better help.
https://resharper-support.jetbrains.com/hc/en-us/community/topics
>> 7*. Is quad channel memory vs dual channel memory something to take into consideration when working in Visual Studio?*
Based on the System Requirement, it doesn't mentioned Visual Studio 2017 will consider quad channel memory or dual channel memory. It only recommend 4GB RAM.
>> 8. How does the story change when running 2 instances of Visual Studio 2017, the second one lets say a WCF project that is servicing the first WPF project?
If one Visual Studio 2017 instance is running a WCF service and another instance is running a WPF project, you need to make sure the WCF service instance Visual Studio is running first. And then when WPF project call the WCF service, it could be called and can be debug in that instance.
Best Regards,
Weiwei
MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact [email protected].
Monday, August 14, 2017 9:09 AM | 1 vote
The reason for this post was to point the areas in which getting a cpu with more cores would benefit and how much Visual Studio architecture benefits from that.
>>> As far as I know, thread is a concept when coding. Single-threaded means the code running in one thread. And the cores means the computer core, which is hardware on machine. So could you explain me that why do you want to compare them and if misunderstanding, please provide more detailed information.
the latest CPU performance specifications usually describe both "# of cores" and "# of threads"
here is Intel clarification
# of Cores
Cores is a hardware term that describes the number of independent central processing units in a single computing component (die or chip).
# of Threads
A Thread, or thread of execution, is a software term for the basic ordered sequence of instructions that can be passed through or processed by a single CPU core.
more powerful CPUs would state 12 cores, 24 threads, for example or 16 cores, 32 threads:
https://ark.intel.com/products/126240/Intel-Core-i9-7920X-X-series-Processor-16_50M-Cache-up-to-4_30-GHz
http://www.amd.com/en/products/cpu/amd-ryzen-threadripper-1950x
the term single threaded is used in benchmarks of CPUs to estimate the performance in the situation where software does not utilize multi-threading:
https://www.cpubenchmark.net/singleThread.html
*>>> In Visual Studio 2017 IDE, we could set multiple processors build in *
*Tools -> Options -> Projects and Solutions -> Build and Run -> maximum number of parallel project builds. *
I was asking more about Visual Studio IDE behavior and performance within, rather than just the build process. Things like refreshing different windows after the build, intellisence performance, windows reacting to changes. There are many things that happen simultaneously.
>>> According to below blog, Visual Studio 2017 improve XAML editing performance and faster switching between designer tabs for UWP and XAML developers, but it doesn't mentioned that it is related to the multi-core.
Could you please point me to the blog. I cannot find the link.
>>> As far as I know, these windows of Visual Studio used when debugging your code, no matter you debug your code on a multi-core machine or not, they all needed when debugging.
Yes, they are needed. I sometimes get a notification from Visual Studio that showing Errors window slows down the startup and if I would like to not show it on startup. So, theoretically, if VS could use an extra thread for Errors window during startup, that could speed up the things a bit. That sort of things is what I am asking about.
>>> R# is a third part plugin for Visual Studio, I suggest you ask this question to R# forum to get a better help.
The question here is how Visual Studio is handling the plugins internally. For example, if I have 2 plugins or 15 plugins on 4 cores machine or 16 cores machine. Does it help having more cores when there are heavy plugins (like R# is used) used, since they could be a good target for parallelization within VS IDE, or is it heavier on single-threaded performance (step above).
Lets put it this way - how much performance gain would I get inside VS IDE itself on bigger projects, if I get:
Intel Core i7-7700K (4 cores, 8 threads) with 12162 mark performance and 2585 mark single thread perfomance
versus
AMD Ryzen 7 1800X (8 cores, 16 threads) with 15421 mark performance and 1957 mark single thread perfomance
regards
Tuesday, August 15, 2017 2:02 AM
Hi Tridy,
Thanks for your response.
>> Could you please point me to the blog. I cannot find the link.
Sorry for my mistake. Following link is the blog I mentioned.
>> I was asking more about Visual Studio IDE behavior and performance within, rather than just the build process.
>> So, theoretically, if VS could use an extra thread for Errors window during startup, that could speed up the things a bit. That sort of things is what I am asking about.
>> Does it help having more cores when there are heavy plugins (like R# is used) used, since they could be a good target for parallelization within VS IDE, or is it heavier on single-threaded performance (step above).
More cores is more benefit to Visual Studio's performance. No matter which software you are use, its performance is effected by the hardware. In other words, more cores will improve any software's performance.
So the problem is not related to Visual Studio how to assign the cores to run its components. It is the problem how the CPU execute the software. The CPU will decide how many cores execute the software based on the execution performance.
In General, you should compare the CPU performance to decide which one you will choose. Visual Studio 2017 only need Dual-core but better is recommend because the better one will improve performance of any software, include Visual Studio 2017.
Best Regards,
Weiwei
MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact [email protected].
Tuesday, August 15, 2017 8:07 AM | 5 votes
So the problem is not related to Visual Studio how to assign the cores to run its components. It is the problem how the CPU execute the software. The CPU will decide how many cores execute the software based on the execution performance.
I will have to disagree here. Surely, a CPU must have the support for multi-threading and operating system take advantage of that as the first step. We are in 2017 at this point and have established that, since I am talking about getting a new CPU, not a dual-core. A multi-core CPU will not make a single-threaded software magically run faster. It can sometimes run even slower.
So, the step two, it is full responsibility of the software whether it will take advantage of multi-threading. That is why C#, for instance [still] has background workers, Tasks, await async, and so on. Developers have to adapt their applications to take advantage of the multi-core processors. As an example, there are not so many games that benefit from more than 4 cores. And again, my question is not about whether I should get a dual core or by a quad core processor.
Will I win anything in VS performance if I invest into a 16 core processor versus an 8 core processor?Depending on if software can take advantage of 16 cores, it maybe an overkill and a waste of money.
Applications like encoders, render engines, compression engines can utilize all available cores and speed up (double or triple) the process performance. That was achieved due to the nature of the applications and that it was relatively easy to split the jobs into several tasks and run in parallel.
Now, my question about VS IDE (not build process) is how much from the architectural point it can utilize multiple cores. It is not as trivial as compressing a file, but there are quite a few things that can be executed in parallel, including the refreshing of the various windows, running extensions and plugins and other things that I have mentioned in previous posts.
Wednesday, August 16, 2017 2:21 AM
Hi Tridy,
Sorry for misunderstanding your original post.
Visual Studio is running with multiple threads which you could check from Task Manager when running Visual Studio. You will find there has multiple processors in Task Manager, such as Microsoft.VsHub.Server.HttpHost.exe, conhost.exe, devenv.exe and so on.
For example, the Microsoft.VsHub.Server.HttpHost.exe used to manage multi-tool communication for Visual Studio. Please refer to:
More discussion about Visual Studio with multiple cores, please refer to following thread. Even this thread discuss from Visual Studio 2008 to Visual Studio 2012, I don't find any new features about multiple cores in Visual Studio 2017 release note, it also applicable to Visual Studio 2017.
Best Regards,
Weiwei
MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact [email protected].
Friday, March 23, 2018 8:21 PM
I have the exact same issue. Trying to build template projects in VS2017 and it's very slow even with my brand new laptop! :( Did you build your workstation?
Phil
Friday, March 23, 2018 11:12 PM
Phil At Hereford,
Please see this thread. If you could reveal any detail about your machine, would be wonderful. Does it have a SSD?
-- pa
Monday, August 27, 2018 3:02 PM | 1 vote
Visual Studio relies on multiple threads to do it's job. It will see benefit of multiple cores to a certain extent. This will all be found in background processing tasks.
User interfaces in Windows by-and-large depend on the UI thread for updates which synchronizes the whole UI. So there is very little Visual Studio can do there. There are a number of elements in Visual Studio that run out-of-process, each of these processes can benefit from it's own core, but it's only seldom that these processes are competing for CPU,
Where you'll see the biggest benefit is in build times when you have solutions with many independent projects. Or solutions with lots of files per project. MsBuild will be able to spin up multiple instances to build independent projects and the compiler (csc, vbc, roslyn) is able to compile multiple classes at the same time while building a single assembly. Many elements in the UI rely on the same infrastructure: The error list, intellisense, syntax highlighting etc.
A similar boost can be had around unit tests. VsTest support parallel test execution (though you may need to enable that in your test assemblies). Depending on how it's configured it will be able to execute tests from different assemblies side-by-side or even all tests in a single assembly side-by-side.
Another element that may benefit from multiple threads is installation and creation of packages (nuget, npm, webdeploy etc). These all rely on processing large or large numbers of zip files. The extraction and compression of these files is largely improved when you have multiple threads available.
Whether you're going to need 12 or 16 or more cores and how much benefit you'll have until IO will become your bottleneck (assuming you're running NVME ssd's in RAID already) is a while different story.
Also, if the action you're waiting for hasn't been built to support concurrent operations, then you're likely to get limited benefits or even a hit, as these ThreadRippers have a lower top-speeds per core to keep the overall temperature down. You may have more benefits from a CPU with fewer cores and a higher top speed (if well cooled) if UI performance is your current desire.
My blog: <a href="https://jessehouwing.net/?msdnforums">jessehouwing.net</a>
Monday, August 27, 2018 3:06 PM | 1 vote
I'm personally working on a 4 core, 8 thread laptop. It's biggest downfall is cooling. Once there are heavy processes running the CPU fan goes to max speed, the CPU stars throttling to keep the laptop cool and the SSD also starts throttling to prevent over-heating. My old trusty 1st gen i7 from 6 years ago regularly outperforms the laptop when sustained CPU power is needed. Based on the fact that it has a much higher cooling capacity.
The same applies to many modern CPUs especially these multi-threaded monsters, which get hot very quickly and throttle their top speeds to stay within their configured TDP.
My blog: <a href="https://jessehouwing.net/?msdnforums">jessehouwing.net</a>
Tuesday, August 28, 2018 11:36 AM | 1 vote
Jesse, this is a little off the main topic I know, but have you tried using a laptop tray with built in fans?