OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-vdrive / test / compact-size.mjs

20 lines · javascript ref:
// Steady-state size: RocksDB reports its uncompacted footprint, which flatters
// nothing and misleads on small stores. Compact, then measure.
//   node test/compact-size.mjs <storeDir...>
import { createRequire } from 'module'
const require = createRequire(import.meta.url)
const { execFileSync } = require('child_process')
const CorestoreStorage = require('hypercore-storage')

const du = (p) => Number(execFileSync('du', ['-sb', p]).toString().split('\t')[0])

for (const dir of process.argv.slice(2)) {
  const before = du(dir)
  const s = new CorestoreStorage(dir)
  await s.ready()
  await s.compact()
  await s.close()
  const after = du(dir)
  console.log(JSON.stringify({ dir, before, afterCompact: after, freed: before - after }))
}