tdb2: use direct access for tdb_read_off/tdb_write_off
This is one case where getting rid of tdb_get() cost us. Also, we
add more read-only checks.
Before we removed tdb_get:
Adding
1000000 records: 6480 ns (
59900296 bytes)
Finding
1000000 records: 2839 ns (
59900296 bytes)
Missing
1000000 records: 2485 ns (
59900296 bytes)
Traversing
1000000 records: 2598 ns (
59900296 bytes)
Deleting
1000000 records: 5342 ns (
59900296 bytes)
Re-adding
1000000 records: 5613 ns (
59900296 bytes)
Appending
1000000 records: 12194 ns (
93594224 bytes)
Churning
1000000 records: 14549 ns (
93594224 bytes)
Now:
Adding
1000000 records: 6307 ns (
59900296 bytes)
Finding
1000000 records: 2801 ns (
59900296 bytes)
Missing
1000000 records: 2515 ns (
59900296 bytes)
Traversing
1000000 records: 2579 ns (
59900296 bytes)
Deleting
1000000 records: 5225 ns (
59900296 bytes)
Re-adding
1000000 records: 5878 ns (
59900296 bytes)
Appending
1000000 records: 12665 ns (
93594224 bytes)
Churning
1000000 records: 16090 ns (
93594224 bytes)