APFS and HFS+ Benchmarks on 2017 Macbook Pro with MacOS High Sierra
malcont.net
malcont.net
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 1001Also, it appears that this test was all done on that High Sierra beta - I think it would be helpful to have HFS+ numbers from Sierra (the predecessor of High Sierra). But I am very happy that this article really discusses how encryption can detract from speed. I have my mac's internal drive encrypted, and I'm always interested to see if updates will slow that encryption down or not
Ext3 could be considered an equivalent jump to the first HFS+ version with journaling. Both HFS+ and Ext3 extended a previously non-journaling filesystem with journaling.
Ext4 is fully compatible with Ext3 images (and is in fact the default codebase for mounting Ext3 volumes on linux), but Ext3 is not fully compatible with all Ext4 images (but potentially compatible with some). Likewise, HFS+ tends to be backwards compatible with images, but old HFS+ is not forward compatible.
I think it's a fairer comparison than you might imagine.
There was (is?) a configuration that stops it for network paths, and 10.10 used to have aseptic (a kext that redirected those) but as far as I know there was no way in 10.11 or 10.13
DeathToDSStore [2] works as well, but like Asepsis it requires you to disable SIP, and that's very much not recommended!
I wonder if its possible to hook into Spotlight real-time (with mdfind?) and just delete them right after its created. Together with disabling it on networks that should be "good enough" to not see them. Might be problematic with removeable media such as USB sticks though. If you're sync/unmounting those via command line, consider a find with xargs [3] on that media before unmounting.
I haven't looked at Blue Harvest as already suggested. If that still works (without disabling SIP) I'm curious how they do that.
[1] defaults write com.apple.desktopservices DSDontWriteNetworkStores true
[2] https://github.com/snielsen/DeathToDSStore
[3] find /path_to_USB_media -name .DS_Store -print0 | xargs -0 rm
Not Spotlight but the File System Events API, which was designed for precisely this kind of thing.
I am not seeing any difference in terms of read and write performance according to Blackmagic Disk Speed Test.
Solid 250 MB/S read and write for both HFS+ Encrypted and APFS Encrypted.
The caveat is that I know the iMac machine is old. I am in the process of upgrading my one month old 2017 MacBook Pro with Touchbar to High Sierra and will return with those results to see if indeed APFS encrypted shows a significant slowdown on newer hardware.
They also don't know if either hfs/hfs+/apfs have anything like zfs' "oh you wrote an entire block of zeros, yeah I'm not doing that, I'll just mark the block as all zeros" optimization.
Never use dd to benchmark file i/o! At least use something like ioperf which has the ability to tell you more about what you're benchmarking. Using dd without bypassing any vm caches is... misguided at best.
Wish they ran a real I/O benchmark program such as blogbench.
What is important however is that file name are finally case sensitive! (I know you could do the same with HFS+, but some applications didn’t support it, ie Adobe)
But then there are applications which have a reasonable excuse to be hitting the filesystem, like iTunes or Photos or Mail. They absolutely redline the filesystem on a regular basis. The basic speed of the flash storage in a MacBook Pro frequently masks these problems, but the filesystem works against it.
One has to be very careful when they share a git repository between case-sensitive and case-insensitive OSes
I think you answered this yourself:
> If main.h and Main.h are truly different, I find it more useful to make the file name more descriptive than just changing letters.
I truly doubt that most users - especially non-technical users - actually would do this.
Let me argue this another way. Nobody regards John Smith and john smith as different names.
The utility is that the filenames are digitally unambiguous buckets of bytes and we avoid 1000000 ways things can go wrong with case-insensitivity, plus the huge performance penalties.
Sometimes catering to how the machine works makes things better than going through hoops for marginal returns and complicating every part of the stack with that technical debt.
>If main.h and Main.h are truly different, I find it more useful to make the file name more descriptive than just changing letters.
Well, main.h and Main.h are visually different, aren't they?
As an analogy take the common text file. Would you like it if the read() and write() system calls looked at the file extension and refused to write non-ASCII or non-Unicode into it?
I would not like that. The flexibility to do whatever I want with those bytes is more important than guaranteeing correct text encoding.
If someone wants that for their system, make the user software do it, not the kernel.
That's only because of a similar cluster-fuck that is unicode compound characters and normalization schemes.
One and only one unambiguous code per different visible glyph would have been too much to ask...
You might be interested in reading "the design of everyday things" by Norman.
If you are developing something for your own use, who cares. But for something that users (even technical users) are going to use, these marginal returns are what makes the difference between a pleasant or a frustrating experience. It's the kind of things that Apple users (used to?) expect in Macs.
I've read it 20+ years ago as suggested by a HCI class at the uni.
The point still stands, regardless of whether it's something for "one's own use" or not. The technical debt from such decisions like a non-case-sensitive fs and the piles upon piles of kludges required to sustain it affect everybody, including the "non technical users".
>these marginal returns are what makes the difference between a pleasant or a frustrating experience
Users can be taught a simple, unambiguous rule, and they'll never think twice about it. "Pleasant experiences" that come with performance penalties, bugs and caveats on the other hand, make them suffer more, whether they know the cause or not. At some point the Clippy was somebody's idea to "delight the users" too.
>It's the kind of things that Apple users (used to?) expect in Macs.
And the kind of thing Apple itself decided it was not worth it.
Now, if we take the example in this thread (INSTALL and install), WHY ON EARTH did the programmer think it was a great idea to do name files like that? Sure, INSTALL for a readme is a tradition in free/*nix software, but then s/he could rename the other file. It seems to me that what really affects users are these nonsensical decisions taken without ease of use and ergonomics in mind.
In 99.9% of cases (no pun intended), case sensitivity is useless and needlessly confusing, which is why you don't use variables named buffer and Buffer in the same scope (I hope), even if you can.
> And the kind of thing Apple itself decided it was not worth it.
Well, I'm still using a Mac because I think the whole experienced is way more polished and consistent than any other Unix, or Windows. And I'm sure many here agree.
Case insensitivity is bad design by the standards established by Norman whose book I have also read.
Well, that's at least arguable. See for example https://www.nngroup.com/articles/readers-comments-on-url-as-...
"We don't need any more case-sensitive computers . It is now several decades since research on human errors proved the prevalence of description errors where people easily confuse two situations that are virtually identical except for a small difference"
That's from Jakob Nielsen, of the Nielsen-Norman group, in which the Norman is that Norman we both referred to.
File systems pose different challenges than urls. Ambiguity in file systems is wholly unacceptable and its more important to be simple and correct than keep idiots from typing afile instead of Afile.
Also it can be bad design in the sense that Norman described even if Norman himself disagrees.
Of course Norman and Nielsen could be wrong, even if they are renowned experts of this field. But please consider that you might be wrong, too :)
And if it does change the default to case sensitive, wouldn't it still break apps like Adobe and Steam etc? I mean, if their problem is that they refer to internal files with the incorrect case, what does it matter how the FS is implemented on a low level.
I am of the impression that you are right. I got it wrong.