OverviewFilesCommitsIssuesDocsReleasesPeers

hyperswarm-peer / test / node_modules / z32 / benchmark.js

134 lines · javascript ref:
const bench = require('nanobench')
const { randomBytes } = require('node:crypto')

const buffers = Array(1e4)
  .fill(null)
  .map(() => {
    return randomBytes(Math.round(Math.random() * 100))
  })

bench('z32 encode 100 times', function (b) {
  const z32 = require('.')
  b.start()
  for (let i = 0; i < 100; i++) {
    for (const buf of buffers) {
      z32.encode(buf)
    }
  }

  b.end()
})

bench('z32 decode 100 times', function (b) {
  const z32 = require('.')
  const encoded = buffers.map(buf => z32.encode(buf))
  b.start()
  for (let i = 0; i < 100; i++) {
    for (const s of encoded) {
      z32.decode(s)
    }
  }

  b.end()
})

bench("buf.toString('hex') 100 times", function (b) {
  b.start()
  for (let i = 0; i < 100; i++) {
    for (const buf of buffers) {
      buf.toString('hex')
    }
  }

  b.end()
})

bench("Buffer.from(s, 'hex') 100 times", function (b) {
  const encoded = buffers.map(buf => buf.toString('hex'))
  b.start()
  for (let i = 0; i < 100; i++) {
    for (const s of encoded) {
      Buffer.from(s, 'hex')
    }
  }

  b.end()
})

bench('base32 encode 100 times', function (b) {
  const base32 = require('base32')
  b.start()
  for (let i = 0; i < 100; i++) {
    for (const buf of buffers) {
      base32.encode(buf)
    }
  }

  b.end()
})

bench('base32 decode 100 times', function (b) {
  const base32 = require('base32')
  const encoded = buffers.map(buf => base32.encode(buf))
  b.start()
  for (let i = 0; i < 100; i++) {
    for (const s of encoded) {
      base32.decode(s)
    }
  }

  b.end()
})

bench('rfc4648.base32 encode 100 times', function (b) {
  const { base32 } = require('rfc4648')
  b.start()
  for (let i = 0; i < 100; i++) {
    for (const buf of buffers) {
      base32.stringify(buf)
    }
  }

  b.end()
})

bench('rfc4648.base32 decode 100 times', function (b) {
  const { base32 } = require('rfc4648')
  const encoded = buffers.map(buf => base32.stringify(buf))
  b.start()
  for (let i = 0; i < 100; i++) {
    for (const s of encoded) {
      base32.parse(s, { out: Buffer.allocUnsafe })
    }
  }

  b.end()
})

bench('base-x z-base-32 encode 100 times', function (b) {
  const ZBASE32 = 'ybndrfg8ejkmcpqxot1uwisza345h769'
  const base32 = require('base-x')(ZBASE32)
  b.start()
  for (let i = 0; i < 100; i++) {
    for (const buf of buffers) {
      base32.encode(buf)
    }
  }

  b.end()
})

bench('base-x z-base-32 decode 100 times', function (b) {
  const ZBASE32 = 'ybndrfg8ejkmcpqxot1uwisza345h769'
  const base32 = require('base-x')(ZBASE32)
  const encoded = buffers.map(buf => base32.encode(buf))
  b.start()
  for (let i = 0; i < 100; i++) {
    for (const s of encoded) {
      base32.decode(s)
    }
  }

  b.end()
})