featurebase/boltdb
Seebs 9e6ec3b17a break boltDB operations into chunks
boltDB's bucket.Put() is quadratic on "new keys put into a bucket during
this transaction", which is why BoltDB has warnings not to use it with over
100k new keys at a time. The translation store logic wasn't actually using
that. The actual value picked is smaller, based on some half-baked benchmarking.

We also avoid heap-allocating separate 16-byte (not 8-byte, of course,
because make(...) is *helping*) chunks twice for each key we insert, instead
allocating a single buffer which we reuse for each new transaction.

Also fixed a check against the nilness of the wrong pointer and generally
made CreateKeys and TranslateKeys a little more similar.
2021-05-07 13:19:15 -05:00
..
attrstore.go un-disable checkptr by fixing the memory problems 2020-10-15 19:12:47 -05:00
translate.go break boltDB operations into chunks 2021-05-07 13:19:15 -05:00
translate_test.go use testhook to ensure temporary files and directories are cleaned up 2021-03-11 19:42:10 -06:00