1'use strict'; 2const SlowBuffer = require('buffer').SlowBuffer; 3const common = require('../common.js'); 4const assert = require('assert'); 5 6const bench = common.createBenchmark(main, { 7 size: [512, 4096, 16386], 8 type: ['fast'], 9 method: ['for', 'forOf', 'iterator'], 10 n: [1e3], 11}); 12 13const methods = { 14 'for': benchFor, 15 'forOf': benchForOf, 16 'iterator': benchIterator, 17}; 18 19function main({ size, type, method, n }) { 20 const buffer = type === 'fast' ? 21 Buffer.alloc(size) : 22 SlowBuffer(size).fill(0); 23 24 const fn = methods[method]; 25 26 bench.start(); 27 fn(buffer, n); 28 bench.end(n); 29} 30 31function benchFor(buffer, n) { 32 for (let k = 0; k < n; k++) { 33 for (let i = 0; i < buffer.length; i++) { 34 assert(buffer[i] === 0); 35 } 36 } 37} 38 39function benchForOf(buffer, n) { 40 for (let k = 0; k < n; k++) { 41 for (const b of buffer) { 42 assert(b === 0); 43 } 44 } 45} 46 47function benchIterator(buffer, n) { 48 for (let k = 0; k < n; k++) { 49 const iter = buffer[Symbol.iterator](); 50 let cur = iter.next(); 51 52 while (!cur.done) { 53 assert(cur.value === 0); 54 cur = iter.next(); 55 } 56 57 } 58} 59