Mac File Managers Performance

Why file managers?

Mac OS has a file manager built-in, the Finder, but it is pretty simple, and for me it is not enough. Third party file managers can be traced back at least to Norton Commander from 1986, and its two-panel design is replicated by advanced file manager to this day.

The one function I use most often is directory synchronization, that is when I want to compare may work folder on MacBook with same folder on NAS.

Which File Managers?

I find the two-panel managers most convenient, so I focused on this type. Here are four managers which looked most promising to me:

Double Commander

Strongly influenced by Total Commander from Windows. Absolutely best functionality, most advanced functions. And for free. On the other side, the UI is not as refined, there are some bugs, and keyboard shortcuts taken straight from Windows can be little awkward. The best folder synchronization function.

Price: FREE.

Website: https://doublecmd.sourceforge.io/

Version: 1.1.28.

ForkLift

Most consistent with Finder. Same keys, same look, but two panels and more functions. Folder synchronization pretty good, although it can’t help, when destination file is newer than the source (e.g. conflicting edits).

Price: $ 19.95 (lifetime license + 1 year of updates).

Website: https://binarynights.com/

Version: 4.4 (459).

Commander One

Rather simple, no folder synchronization. Otherwise gets the job done.

Price: $ 29.99 + VAT.

Website: https://commander-one.com/

Version: 3.15.3960.

CRAX Commander

Rather simple, no folder synchronization. Otherwise gets the job done. Irritating nag screen in demo version.

Price: $ 25.99 + VAT

Website: https://crax.soft4u2.com/

Version: 1.15.3.

Performance

I wanted to select best File Manager for myself, and decided that performance would be important. As NASes seem to be getting more popular, and limited speed of network connections can amplify differences in performance, I’ll be testing the managers using network share, by copying from Mac to it.

I run these tests over 2.5GB wired connection, to make sure results are not affected by WiFi congestion and interference. I expect that relative performance between manager will be similar on WiFi and wired connections.

Fruit? What Fruit?

The most popular protocol for accessing files on network shares is Microsoft’s Server Messages Blocks – SMB. SMB is also Apple’s preferred protocol for network sharing, although it uses own implementation. The free implementation of SMB server, used on most Linuxes, and so on Linux-based NASes, is Samba.

Mac using Windows protocol. I think we all know were it goes.

Mac OS filesystem differs substantially from Windows filesystem, and making Mac work with SMB brings some challenges. For example, SMB (and Samba) do not support “extended attributes” used by Mac OS.

Mac OS can live with that (well, mostly), but there are functional and performance penalties (e.g. Time Machine not working, or folder listing being slow).

To mitigate this, Samba developers introduced pluggable module called vfs_fruit. It helps a lot, but there are some quirks. The one that bothers me the most, is that some software can not preserve file timestamps when copying files from Mac to Samba share. In this comparison this affects Double Commander.

In the charts below I will show performance with both vfs_fruit disabled and enabled, so you can understand what kind of benefit it brings.

And there is “one more thing”: while SMB is Apple’s preferred protocol, it doesn’t mean it works well. Unfortunately, it can’t make full use of network bandwith, at least with Mac and Samba. To demonstrate this, I’m including scp results in some of the charts, so you can compare SMB with alternate protocol (scp is command line tool, which uses SSH protocol, and is commonly used in Linux/Unix environments – as Mac OS has some Unix roots, it comes with scp preinstalled).

Test: enter folder with 10,000 files

Let’s start testing by entering folder with a lot of files. Maybe 10,000 files in a folder is not very common, but it makes easy to measure time and compare. We can easily scale results down.

Interestingly, free Double Commander is here so much ahead it is hard to believe (so I tested it multiple times).

Also, here we can see how much we benefit from vfs_fruit… except for Double Commander, which obviously has some issue with that. Remember, that it also can’t keep timestamps with vfs_fruit?

Test: copy 1000 empty files

Now let’s copy a lot of empty files. This reveals how much overhead there is in just creating a file. This will affect all operations on many files.

Again, we can see benefit from vfs_fruit (except for Double Commander, again). Also, the results are more consistent, with stronger outlier being ForkLift.

But just look at scp, to see how far all SMB tools are behind.

Test: copy 1000 files 0.5MB each

Now let’s just copy some data, not just filenames.

Now, look at that Double commander. The speed is insane, especially with vfs_fruit. But remember that it can’t preserve timestamps. Maybe this is how it saves so much time.

And again scp shows how far behind SMB is.

Test: copy one 1 GB file

Now let’s measure something similar to copying video file.

Double Commander can achieve results comparable with scp, this is around 2 GBbps, quite close to network theoretical throughput. But remember that issue with timestamps. Other managers are also getting closer, this suggests that the performance isn’t limited by data transfer but by overhead related to creating files.

Test: delete folder with 10,000 files

Now let’s do some cleanup.

This time small surprise – Finder is slower with vfs_fruit.

Conclusion

Double Commander seems to be performing best, although usually by small margin, with notable exception being entering folder. This issue with timestamps is worrying, and I would use it only if I could be sure vfs_fruit is disabled. It has best synchronization tool, so that would be my first choice.

The other tools seem comparable in performance, with maybe slightly slower performance from Commander One. But that wouldn’t be deciding factor for me. I would pay more attention to folder synchronization tool, which is present only in ForkLift and Double Commander.