| 'use strict'; |
| |
| const assert = require('assert'); |
| const common = require('../common.js'); |
| |
| const configs = { |
| n: [1e3], |
| mode: ['Array', 'repeat'], |
| encoding: ['ascii', 'utf8'], |
| size: [1e1, 1e3, 1e6], |
| }; |
| |
| const bench = common.createBenchmark(main, configs); |
| |
| function main({ n, size, encoding, mode }) { |
| const character = encoding === 'ascii' ? 'a' : '\ud83d\udc0e'; // '🐎' |
| |
| let str; |
| |
| switch (mode) { |
| case 'Array': |
| bench.start(); |
| for (let i = 0; i < n; i++) |
| str = new Array(size + 1).join(character); |
| bench.end(n); |
| break; |
| case 'repeat': |
| bench.start(); |
| for (let i = 0; i < n; i++) |
| str = character.repeat(size); |
| bench.end(n); |
| break; |
| default: |
| throw new Error(`Unexpected method "${mode}"`); |
| } |
| |
| assert.strictEqual([...str].length, size); |
| } |