Benchmark - Fill Array With Zeros

by basickarl

HTML

<script src="https://cdn.jsdelivr.net/firebuglite/1.4.0/firebug-lite-debug.js"></script>
<script src="https://cdn.jsdelivr.net/g/lodash@4.13.1,platform.js@1.3.1,benchmarkjs@2.1.1"></script>

JavaScript

'use strict';

(function() {
  // add your functions here

  function fill(size, content) {
    for (; size--; this.push(content));
    return this;
  }

  function makeRec(len, acc) {
    if (acc == null) acc = [];
    if (len <= 1) return acc;
    var b = makeRec(len >> 1, [0]);
    b = b.concat(b);
    if (len & 1) b = b.concat([0]);
    return b;
  }

  function filledArray(len, value) {
    if (len <= 0) return [];
    var result = [value];
    while (result.length < len / 2) {
      result = result.concat(result);
    }
    return result.concat(result.slice(0, len - result.length));
  }

  function newFilledArray(len, val) {
    var a = [];
    while (len--) {
      a.push(val);
    }
    return a;
  }
  
  function emptyArr(n, v) {
  	var arr = [];
    for (var i = 0; i < n; i += 1) {
        arr[i] = v;
    }
    return arr;
  }

  // add the actual tests here, suite index, name, function
  function yourTests() {

    console.log('new Array(10000).fill(0);', (new Array(10000).fill(0)).length);
    addTest(0, 'new Array(10000).fill(0);', function() {
      new Array(10000).fill(0);
    });

    console.log('fill.call([], 10000, 0);', fill.call([], 10000, 0).length);
    addTest(0, 'fill.call([], 10000, 0);', function() {
      fill.call([], 10000, 0);
    });

    console.log('Array.apply(null, Array(10000)).map(Number.prototype.valueOf,0);', Array.apply(null, Array(10000)).map(Number.prototype.valueOf, 0).length);
    addTest(0, 'Array.apply(null, Array(10000)).map(Number.prototype.valueOf,0);', function() {
      Array.apply(null, Array(10000)).map(Number.prototype.valueOf, 0);
    });

    console.log('new Array(10000+1).join(\'0\').split(\'\').map(parseFloat);', new Array(10000 + 1).join('0').split('').map(parseFloat).length);
    addTest(0, 'new Array(10000+1).join(\'0\').split(\'\').map(parseFloat);', function() {
      new Array(10000 + 1).join('0').split('').map(parseFloat);
    });

    console.log('[].slice.apply(new Uint8Array(10000));',...