tdb2: shrink free header from 32 to 24 bytes.
This reduces our minimum key+data length to 8 bytes; we do this by packing
the prev pointer where we used to put the flist pointer, and storing the
flist as an 8 bit index (meaning we can only have 256 free tables).
Note that this has a perverse result on the size of the database, as our
4-byte key and 4-byte data now fit perfectly in a minimal record, so
appeding causes us to allocate new records which are 50% larger,
since we detect growing.
Current results of speed test:
$ ./speed
1000000
Adding
1000000 records: 23210 ns (
59193360 bytes)
Finding
1000000 records: 2387 ns (
59193360 bytes)
Traversing
1000000 records: 2150 ns (
59193360 bytes)
Deleting
1000000 records: 13392 ns (
59193360 bytes)
Re-adding
1000000 records: 11546 ns (
59193360 bytes)
Appending
1000000 records: 29327 ns (
91193360 bytes)
Churning
1000000 records: 33026 ns (
91193360 bytes)
Previous:
$ ./speed
1000000
Adding
1000000 records: 28324 ns (
67232528 bytes)
Finding
1000000 records: 2468 ns (
67232528 bytes)
Traversing
1000000 records: 2200 ns (
67232528 bytes)
Deleting
1000000 records: 13083 ns (
67232528 bytes)
Re-adding
1000000 records: 16433 ns (
67232528 bytes)
Appending
1000000 records: 2511 ns (
67232528 bytes)
Churning
1000000 records: 31068 ns (
67570448 bytes)