| '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); |
| } |