

1·
30 days agoOn paper they are efficient. In practise, all pointer based data structures (linked lists, binary trees, etc) are slow on modern hardware. And this effect is more important than the complexity in practise for most practical high performance code.
You are far better off with linear access where possible (e.g. vectors, open addressing hash maps) or if you must have a tree, make the fan-out factor as large as possible (e.g. btrees rather than binary trees).
Now, I don’t know if Haskell etc affords you such control, I mainly code in Rust (and C++ in the past).
Also see this old thread from 2016 on hacker news about this very topic: https://news.ycombinator.com/item?id=13263275
Snapshots are great for solving accidental oopses, and for getting consistent backups that reflect a single point in time. But they aren’t backups. If the HDD or SSD dies snapshots don’t help. If the file system gets corrupted snapshots don’t help. If the file data becomes corrupt snapshots don’t help (since they only store a single copy of any version of a file).
So snapshots are no substitute for backups. I run btrfs and I do backups, and I sync those backups to a remote location (look up 3-2-1 backup).