#YOLO Programming

Is an m.2 PCIe NVMe SSD a Worthy Upgrade Over a SATA SSD Drive?

Recently my 850 EVO SSD stopped responding, so I found myself in the market for a new SSD because I didn't want to wait for the replacement; and also because I wanted to make lemonade out of lemons and try out an NVMe SSD (I have a thing about hardware.... I don't like replacing old parts with equal or lesser replacements).

For the uninitiated, SSDs are super fast when compared to older hard drives that have spinning platters.  If you have an older PC that you want to speed up, the single biggest upgrade you can make is to purchase an SSD, since the rest of the computer is likely waiting on your (slow) disk.  But if you're reading this, you probably already knew that.  The issue is that SSDs are fast, but the "lane" to the PC isn't as fast.  The best analogy I can think of is driving a race car on the Long Island Expressway, toward New York City at 8am on a weekday [OK, got the car analogy out of the way].


Sata III supports speeds up to 750MB/s, while PCI-E x4 supports a theoretical 4GB/s (note the capital B.  In Gigabits that's 6Gb and 32Gb, respectively).

SSDs have clearly hit the Sata III wall, but they're no where near the 4GB limit.  So before talking about the real world, let's get a baseline by running some synthetic benchmarks.  The m.2 that I ended up purchasing was the 950 Evo Pro NVMe (I forgave Samsung, I'll assume my hard drive issue was a fluke.  I've had issues with Seagate and Western Digital, so I'll allow them a pass as well).  I haven't gotten a replacement for the 850 Evo yet, so I'll be comparing it to the Intel 530 Series SSD, the only other SSD on my PC.  For completeness' sake, I'll also compare against the Western Digital Velociraptor, which I've had since dinosaurs roamed the Earth (get it?), but is still a 10k disk, so faster than the 7200rpm spinning disks that most people have.

The benchmarking software I used is UserBenchmark.  Please note that I'm just trying to demonstrate scale of difference here, I am not running the benchmarks in a clean environment (I have apps open, Visual Studio, VMWare, etc).  If you want really good benchmarks, there are a ton of sources with better numbers than here.

As you can see, the NVMe SSD blows away both the SATA SSD and of course the 10k HDD.  But what about real world use cases?

In real world comparisons, the results are not nearly as noticeable as you'd think by reading the benchmarks.  The boot up time is certainly faster; but Windows 10 on SSD was already fast, and quite frankly, I don't boot my PC up often enough to care.  I think that some programs open slightly faster, compared to the original 840 EVO, though it may be in my head (sort of like when the eye doctor asks you to compare two nearly identical prescriptions).  If there is a difference, the difference is barely noticeable, certainly not nearly as noticeable as the upgrade from traditional HDD to SSD, which I assume you've already done (and if you haven't, please stop reading this and start complaining to your boss now).  I suspect that at least some of the reason I'm having a hard time spotting the difference because Windows Prefetcher is pre-loading parts of applications I commonly use (e.g. Chrome) into memory before I load them.

Alright, so I barely noticed a speedup in application loading, but most apps were already loading fast on my previous SSD.  What about something more relevant to programmers, like working on large projects?

For this test, I am going to open a large Visual Studio solution 3x each, on the 850 EVO NVMe SSD and on the 230 SATA.  I will not run this test on the  Velociraptor 10k disk because I am not a glutton for punishment, and at this point you should already be convinced to upgrade to an SSD.  Both tests will exclude the first-time opening of the solution so that we exclude overhead introduced by tools like Resharper updating it's cache.  The tests will entail me using a stopwatch; I'll start the clock and double click the solution in Windows Explorer.  I'll stop the clock when all the projects are loaded.  I define "loaded" as when the blue bar at the top of Solution Explorer fully loads and disappears.  The test is far from perfect, so don't look too far into the numbers; we're simply looking for scale of difference in the numbers.

Intel 230 SSD (SATA III)

Test Run 1 59s
Test Run 2 55s
Test Run 3 30s


Samsung 850 Evo Pro (NVMe)

Test Run 1 30s
Test Run 2 31s
Test Run 3 30s



Or for those who like graphs....

So here we see a measurable performance difference between the two drives, and a significant one at that.  I also suspect that Resharper should be somewhat more responsive, particularly when it loads the cache at solution start up.

Why didn't I test compile speeds?  It turns out that CPU is a much bigger factor in compilation speed that disk speed. Ben Robbins, a StackOverflow user, did a fantastic job documenting his findings, so you should check his answer out if you're curious about the impact SSD and CPU have in compilation times.

So, is an NVMe SSD a worthy upgrade over a SATA SSD?  If money is a non issue, and/or if you're opening large projects all of the time (I tend to open multiple large products multiple times a day), or a reading a lot of data; maybe it's worth it.  At the current price point though, most developers are likely better off saving the money for a better CPU to improve compilation times; since they will be compiling far more often than opening large projects.  At the time of writing, a SATA III 850 Evo is $225, while the M.2 NVMe version is $339.  That price difference is pretty significant and can go toward a nicer class of CPU, if you're building a new PC.  

Comments (2) -

  • Al

    10/22/2017 9:50:51 AM | Reply

    Very helpful write-up - the long island expressway analogy explains it really well. Thanks

  • Pipster

    6/21/2018 4:56:59 PM | Reply

    picked up an m.2 nvme 240gb for 65$ and I think it was worth it.

Add comment


Monthly Archive

The file '/Custom/Widgets/ScriptInjection/widget.cshtml' does not exist. The file '/Custom/Widgets/ScriptInjection/widget.cshtml' does not exist.