1'use strict'; 2 3const common = require('../common.js'); 4const bench = common.createBenchmark(main, { 5 encoding: [ 6 '', 'utf8', 'ascii', 'hex', 'utf16le', 'latin1', 7 ], 8 args: [ '', 'offset', 'offset+length' ], 9 len: [2048], 10 n: [1e6], 11}); 12 13function main({ len, n, encoding, args }) { 14 let string; 15 let start = 0; 16 const buf = Buffer.allocUnsafe(len); 17 18 switch (args) { 19 case 'offset': 20 string = 'a'.repeat(Math.floor(len / 2)); 21 start = len - string.length; 22 if (encoding) { 23 bench.start(); 24 for (let i = 0; i < n; ++i) { 25 buf.write(string, start, encoding); 26 } 27 bench.end(n); 28 } else { 29 bench.start(); 30 for (let i = 0; i < n; ++i) { 31 buf.write(string, start); 32 } 33 bench.end(n); 34 } 35 break; 36 case 'offset+length': 37 string = 'a'.repeat(len); 38 if (encoding) { 39 bench.start(); 40 for (let i = 0; i < n; ++i) { 41 buf.write(string, 0, buf.length, encoding); 42 } 43 bench.end(n); 44 } else { 45 bench.start(); 46 for (let i = 0; i < n; ++i) { 47 buf.write(string, 0, buf.length); 48 } 49 bench.end(n); 50 } 51 break; 52 default: 53 string = 'a'.repeat(len); 54 if (encoding) { 55 bench.start(); 56 for (let i = 0; i < n; ++i) { 57 buf.write(string, encoding); 58 } 59 bench.end(n); 60 } else { 61 bench.start(); 62 for (let i = 0; i < n; ++i) { 63 buf.write(string); 64 } 65 bench.end(n); 66 } 67 } 68} 69