> XFS has absolutely terrible performance for lots of use cases (deletions, for instance).Depends /heavily/ on hardware. XFS evolved on high-end machines, and performs awesomely when you have:
* EITHER large write cache (write cache size >> journal size), think `decent RAID controller',
* OR at least put the journal is on a separate harddrive -- which is very real on average workstation.
Been there, done that, the difference is astonishing.
It boils down to specific media access patterns: XFS uses mixed physical/logical journaling; some operations cause a lot of `physical' (i.e., low-level) representation of directory and file metadata to be written to the journal.
Having harddrive's heads fly back-and-forth between different areas (journal vs. metadata) is a sure recipe for abysmal performance. On the other hand, if you have large write cache to handle journal, or at least employ separate harddrive head to serve journal, directory and file metadata has pretty good locality (thanks to very smart allocator) and the other head doesn't have to move too much.
EDIT:
it's worth noting XFS handles large (multi-gigabyte) files very well, as compared to other filesystems. Both r/w access and creation/removal is fast, on any hardware. This is XFS's original and primary use case: handling large multimedia and scientific datasets.
Want to keep countless virtual machine images? XFS is the way to go, especially thanks to smart allocator which lessens fragmentation as compared to competing filesystems.
tl;dr: XFS is optimized for handling large files. With the right setup -- possible on mid-end hardware -- it also handles numerous small files (say, linux-kernel-size projects) very well.