@ 261105.16
current
'use strict';

const util = require('util');
const common = require('../common');

const bench = common.createBenchmark(main, {
  n: [1e3],
  length: [500, 1000],
  scenario: ['identical', 'small-diff', 'medium-diff', 'large-diff'],
});

function main({ n, length, scenario }) {
  const actual = Array.from({ length }, (_, i) => `${i}`);
  let expected;

  switch (scenario) {
    case 'identical': // 0% difference
      expected = Array.from({ length }, (_, i) => `${i}`);
      break;

    case 'small-diff': // ~5% difference
      expected = Array.from({ length }, (_, i) => {
        return Math.random() < 0.05 ? `modified-${i}` : `${i}`;
      });
      break;

    case 'medium-diff': // ~25% difference
      expected = Array.from({ length }, (_, i) => {
        return Math.random() < 0.25 ? `modified-${i}` : `${i}`;
      });
      break;

    case 'large-diff': // ~100% difference
      expected = Array.from({ length }, (_, i) => `modified-${i}`);
      break;
  }

  bench.start();
  for (let i = 0; i < n; i++) {
    util.diff(actual, expected);
  }
  bench.end(n);
}