Binary trees considered harmful
Binary trees considered harmful
Posted Jul 6, 2006 16:49 UTC (Thu) by i3839 (guest, #31386)In reply to: Binary trees considered harmful by ncm
Parent article: Trees II: red-black trees
Well, who knows, maybe it has something to do with this:
$ size Judy-1.0.3/src/obj/.libs/libJudy.so.1.0.3 text data bss dec hex filename 114515 760 160 115435 1c2eb Judy-1.0.3/src/obj/.libs/libJudy.so.1.0.3 $ size linux/lib/*tree*.o text data bss dec hex filename 1823 0 128 1951 79f linux/lib/prio_tree.o 2934 28 36 2998 bb6 linux/lib/radix-tree.o 1544 0 0 1544 608 linux/lib/rbtree.oFor something which is avoiding cache misses as much as possible it seems a bit strange to be so bloated that the code to avoid all those cache misses causes so awfully lot cache misses itself. Of course, this isn't something you'll see when benchmarking the code...
Furthermore, whatever memory saving might be achieved by using Judy arrays, it has a long to go way before it made up for that 100K extra usage.
And to rub it in, hashes are almost as good as Judy arrays but are much simpler and smaller to implement. Only icky thing is their (re-)size problem, but that's less icky than a 100K footprint. Good b-tree (not a binary tree) implementations are also not significant worse.
I'm not trying to prove that Judy arrays are bad, they have their usages, but I do think that the kernel isn't the right place for them.