Back in 2015, I wrote a popular post comparing the performance of a number of microSD cards when used with the Raspberry Pi. In the intervening three years, the marketplace hasn't changed a ton, but there have been two new revisions to the Raspberry Pi (the model 3 B and just-released model 3 B+). In that article, I stated:
One of the highest-impact upgrades you can perform to increase Raspberry Pi performance is to buy the fastest possible microSD card—especially for applications where you need to do a lot of random reads and writes.
As part of my work on a comprehensive review of the Raspberry Pi model 3 B+, I decided to re-run all the benchmarks for all the Samsung and SanDisk cards (the rest, from Sony, Toshiba, Lexar, and no-name brands were so slow for Pi usage as to not warrant any testing at all!). Without further ado, here are the latest results, tested on a Raspberry Pi model 3 B+:
Just as with the model 2 B and model 3 B, the Samsung Evo+ outshines the rest of the field in 4K random read and random write—two of the most important metrics for common Raspberry Pi use cases. Since the Pi's microSD I/O is often the major bottleneck (especially now that the onboard LAN and WiFi have upped their bandwidth by at least 2x over the previous generation), it's important to get every bit of speed out of the card that runs the OS as is possible.
In a simpler format, here are my picks for the best microSD cards on the market for use with the Raspberry Pi:
Overclocking the Pi's microSD card reader
You can also overclock the microSD card reader in the Raspberry Pi to eke out a tiny bit more performance from the cards in this benchmark (all except the Samsung Pro (non-plus) were stable at a 100 MHz overclock in my testing), but it won't make much of a difference in real-world usage.
There is a measurable performance increase, but when you get to real-world usage, it doesn't make a huge difference (when I did Drupal testing, there was less than 1% difference when overclocked vs not overclocked).
For the benchmarks, I ran a standardized I/O benchmark script on a freshly-flashed Pi using the latest version of Raspbian Lite, with no modifications or customizations. The script can be run on a Pi running Raspbian using the following command:
curl https://raw.githubusercontent.com/geerlingguy/raspberry-pi-dramble/master/setup/benchmarks/microsd-benchmarks.sh | sudo bash
You can view all the benchmarks and detailed methodology in my continuously-updated microSD card benchmarks page on the Raspberry Pi Dramble wiki.