@Disabled // manual perf test only
    @Test
    void testLoadingSortedKeys_perf() {
        final TimedCase case0 = buildPutPerfTestCase("DB warm up",
                (writeTxn, keyBuffer, valueBuffer) -> {
                    basicLmdbDb.getLmdbDbi().put(writeTxn, keyBuffer, valueBuffer);
                });
        final TimedCase case1 = buildPutPerfTestCase("Dbi no flags",
                (writeTxn, keyBuffer, valueBuffer) -> {
                    basicLmdbDb.getLmdbDbi().put(writeTxn, keyBuffer, valueBuffer);
                });
        final TimedCase case2 = buildPutPerfTestCase("Dbi NOOVERWRITE",
                (writeTxn, keyBuffer, valueBuffer) -> {
                    basicLmdbDb.getLmdbDbi().put(writeTxn, keyBuffer, valueBuffer, PutFlags.MDB_NOOVERWRITE);
                });
        final TimedCase case3 = buildPutPerfTestCase("Dbi NOOVERWRITE APPEND",
                (writeTxn, keyBuffer, valueBuffer) -> {
                    basicLmdbDb.getLmdbDbi().put(writeTxn,
                            keyBuffer,
                            valueBuffer,
                            PutFlags.MDB_NOOVERWRITE, PutFlags.MDB_APPEND);
                });
        final TimedCase case4 = buildPutPerfTestCase("AbstractLmdb noOverwrite noAppend",
                (writeTxn, keyBuffer, valueBuffer) -> {
                    basicLmdbDb.put(writeTxn,
                            keyBuffer,
                            valueBuffer,
                            false,
                            false);
                });
        final TimedCase case5 = buildPutPerfTestCase("AbstractLmdb noOverwrite append",
                (writeTxn, keyBuffer, valueBuffer) -> {
                    basicLmdbDb.put(writeTxn,
                            keyBuffer,
                            valueBuffer,
                            false,
                            true);
                });
        final TimedCase case6 = buildPutPerfTestCase("AbstractLmdb overwrite append",
                (writeTxn, keyBuffer, valueBuffer) -> {
                    basicLmdbDb.put(writeTxn,
                            keyBuffer,
                            valueBuffer,
                            true,
                            true);
                });
        TestUtil.comparePerformance(
                2,
                1_000_000,
                (rounds, iterations) -> basicLmdbDb.drop(),
                LOGGER::debug,
                case0,
                case1,
                case2,
                case3,
                case4,
                case5,
                case6);

        LOGGER.debug("basicLmdbDb count:  {}", ModelStringUtil.formatCsv(basicLmdbDb.getEntryCount()));
    }
This test is an example of how to abuse LMDB. If run it will crash the JVM
as a direct bytebuffer returned from a get() was mutated outside the transaction.
stroom-lmdb/src/test/java/stroom/lmdb/TestBasicLmdbDb.java