Speed in MB/s
HFS+ HFS+ Encrypted APFS APFS Encrypted
1M write 498 473 490 (-2%) 444 (-6%)
1M read 6896 6815 6860 (-1%) 6827 (0%)
4k write 486 477 485 (-0%) 445 (-7%)
4k read 2734 2709 2599 (-5%) 2545 (-6%)
While there is still some performance degradation between HFS+ and APFS, it's within a single digit now. Speed in MB/s
HFS+ HFS+ Encrypted APFS APFS Encrypted
read 513 513 508 506
write 477 460 478 432
The earlier results of 7 GB/s are quite impossible with the Samsung Evo Pro 850 -- those max out around 500 MB/s. So my earlier test results are invalid. The new test results mostly show that both file systems can saturate the disk's raw throughput.-- update
On my internal Apple SSD (PCI-Express) I've created a partition for testing. I've kept "Blackmagic Disk Speed Test" running for a few minutes and took an average of the tests. The results are in favor of APFS, beating HFS+ by 3-17% in throughput.
Speed in MB/s
HFS+ HFS+ Encrypted APFS APFS Encrypted
read 2400 2240 2700 (+13%) 2400 (+7%)
write 1900 1930 2000 (+5%) 1980 (+3%) Speed in MB/s
HFS+ HFS+ Encrypted APFS APFS Encrypted
1M WRITE 1375 1373 1372 933
1M READ 2446 2340 2162 1304
4K WRITE 852 797 502 378
4K READ 2106 1486 2156 1001
https://news.ycombinator.com/item?id=15333754If crypto is part of the syscall path, then you definitely pay with latency. If you can push IO to a worker thread then you can release the user call faster. This also requires tuning the read-ahead cache more aggressively.
It could also be a change in crypto algorithm, unaligned page IO, or any other overlooked IO latency problems.
On Mac OS, it seems you only get full disk encryption, though (https://arstechnica.com/gadgets/2017/09/macos-10-13-high-sie...)
30-40% in a stress test is significant. but if I'm not editing 4k videos perhaps, where would I notice this?
Even amongst us programmers who use horrible inefficient IDEs and make horrible inefficient electron apps, disk speed isn't really a noticeable bottleneck right now?
Even a convoluted local environment to simulate a server environment with a ton of microservices wouldn't really be affected much by this
Or, to put this another way: Do you have an SSD? Why?
a benchmark is just a repeated process which is not reflective or real world use except in very small narrowly tailored applications