HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: //usr/share/opensearch-dashboards/node_modules/flatstr/benchmark.js
'use strict'
var nul = process.platform === 'win32' ? '\\\\.\\NUL' : '/dev/null'
var bench = require('fastbench')
var stream = require('fs').createWriteStream(nul)
var flatstr = require('./')
var largeStr = JSON.stringify(require('./package.json'))
largeStr += largeStr
largeStr += largeStr

var run = bench([
  function unflattenedManySmallConcats (cb) {
    stream.write(makeStr('a', 200))
    setImmediate(cb)
  },
  function flattenedManySmallConcats (cb) {
    stream.write(flatstr(makeStr('a', 200)))
    setImmediate(cb)
  },
  function unflattenedSeveralLargeConcats (cb) {
    stream.write(makeStr(largeStr, 10))
    setImmediate(cb)
  },
  function flattenedSeveralLargeConcats (cb) {
    stream.write(flatstr(makeStr(largeStr, 10)))
    setImmediate(cb)
  },
  function unflattenedExponentialSmallConcats (cb) {
    stream.write(makeExpoStr('a', 12))
    setImmediate(cb)
  },
  function flattenedExponentialSmallConcats (cb) {
    stream.write(flatstr(makeExpoStr('a', 12)))
    setImmediate(cb)
  },
  function unflattenedExponentialLargeConcats (cb) {
    stream.write(makeExpoStr(largeStr, 7))
    setImmediate(cb)
  },
  function flattenedExponentialLargeConcats (cb) {
    stream.write(flatstr(makeExpoStr(largeStr, 7)))
    setImmediate(cb)
  }
], 10000)

run(run)

function makeStr (str, concats) {
  var s = ''
  while (concats--) {
    s += str
  }
  return s
}

function makeExpoStr (str, concats) {
  var s = str
  while (concats--) {
    s += s
  }
  return s
}