1

I am primarily working with C#, dotnet and Visual Studio 2019 with extensions like Resharper enabled. Visual Studio with Resharper is a memory hog.

I currently have the following PC at home where I do my development work:

  • CPU - Ryzen 7 2700x
  • RAM - 2 x 16 gb 3000Mhz
  • Storage - 512 GB SSD - WD Blue
  • Motherboard - Asus Rog Strix B350M-i Gaming
  • GPU - Gigabyte GeForce Windforce GTX1080 8GB
  • OS - Win 10 Pro

With a few Firefox windows, and few instances of Visual Studio debugging Docker containers I hit CPU utilization 100% and memory utilization 100% for 3-4 minutes. The machine came to a crawling speed, even mouse wasn't moving smoothly.

Also build-compile-debug-run tests could do with faster speeds, it's not good for productivity when I sit idle and watch build progress. I would like to enable auto run unit tests on every code change save to ensure I haven't broken anything and have rapid feedback loop. I can't run this effectively now because it slows down build-compile-run-test flow.

Does Visual Studio build/compile/debug/ run test workflow benefit from Multicore CPUs or benefit from higher single core clock speeds?

Seeing results of https://www.cpubenchmark.net/high_end_cpus.html , how does these scores mean for a workflow like mine?

  • Ryzen 7 2700x has a score of 16,927.
  • Ryzen 9 3900x has a score of 31,943 (almost twice the score)
  • Ryzen 9 3950x has a score of 35702 (more than double of 2700x, and around 11% more than 3900x)

Ryzen 9 3950x is 50% costlier than Ryzen 9 3900x , but the performance CPU Benchmark scores only a 11% increase. Is that synthetic score not relevant for my workflow? Would having 8 extra cores (as compared to 3900x) help me a lot?

So would this mean if my build/compile takes around 60s now, getting a ryzen 3900x would make it near 30s?

Right now I have a SATA SSD Western Digital Blue, would getting an NVME SSD help?

I am also thinking of upgrading to 64GB RAM.

4
  • Hardware recommendations are off-topic here. That said, getting a more powerful machine might help, but reducing overhead may be much more effective and cost a lot less. Do you really need multiple VS debugging containers? What in them is hogging memory and CPU? Your desire for continuous compilation and unit testing at first sight looks like a good idea, but it probably will interfere with your focus which should first be on program structure and how you want to transform it, not on how to make compiler and unit tests happy. Commented Feb 15, 2020 at 14:20
  • This is a QA site, open ended questions are not encouraged. Having said that, you need to look in task manager which processes use up all the CPU and memory and take it from there. Make sure you are up to date with drivers and firmware, as AMD has repeatedly have to tweak CPU scheduling on Windows. Make sure antivirus is not interfering (create exceptions). I'd get a fast nvme SSD like the silicon power p34a80 or another Phison E12 drive, as it will be several times faster than anything SATA. Then add more memory, because it's relatively cheap.
    – Martin K
    Commented Feb 15, 2020 at 22:11
  • 2
    The problem is probably in Docker, not Visual Studio. Also, make sure stuff like antivirus doesn't do something stupid. I might also recommend nCrunch, you are doing TDD, as it has build infrastrucure separate from VS.
    – Euphoric
    Commented Feb 16, 2020 at 11:46
  • I cannot stress @Euphoric's comment about anti virus software enough. It gets pretty invasive. Commented Feb 16, 2020 at 20:19

2 Answers 2

4

Your PC is plenty powerful for profesional software development. Assuming you have verified that there are no actual hardware problems, that would make your PC less powerful than it seems on paper.

You should instead focus on modifying your software workflow to have better use of resources.

I would question use of Docker in your scenario. I understand that having a consistent environment is useful, but you shouldn't need more than one, maybe two docker instances running at one time.

I would also look if you can modularize and split up your software solution to make use of incremental build. In properly designed software project, majority of changes shouldn't require rebuild more than two or three components out of dozens. This cannot be overstated. Re-building your whole solution every time you make a change should be huge red flag, that there is design and architecture problem.

My experience also tells me that antivirus software can cause big problems with speed and responsivness of computer. Especially with software development, where build can manipulate many files, forcing antivirus to check every single one. If this is a problem, most antiviruses provide options to white-list specific executables and folders so it's background checks ignore them.

You also mention you want to run tests after every change. For that, I can't more than recommend nCrunch Visual Studio add-on. It might cost some dolars, but it has it's more efficient and parallelized build and test-running infrastructure. But that is only if your architecture is properly modularized for incremental builds.

2

Your setup should easily run dozens of visual studio instances and firefox windows with no problem.

Lose docker.

Theres no reason to use docker for dotnet core applications and you are in effect running multiple vms each running containers which are lets face it buggy compared to mature vm solutions.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.