chunk methods (v3)

Revision 3 of this benchmark created on


Setup

// code from http://stackoverflow.com/questions/8495687/split-array-into-chunks
  var a=[];
  for (var i=1; i < 500000; i++) a.push(i);
  
  function chunkA(arr, n) {
      var segments = [];
      var len = arr.length;
      var a,b=0;
      // this replaces the .chunk which fails in large file sizes.
      while ( arr.length > 0 ){
          b = Math.min(arr.length,n);
          segments.push(arr.splice(0,b));
      }
      return segments;
  }
  function chunkB(arr, n) {
    var i, j, temparray = [], chunk = n;
    for (i = 0, j = arr.length; i < j; i += chunk) {
      temparray.push(arr.slice(i, i + chunk));
    }
    return temparray
  }
  
  function chunkC(arr, chunkSize) {
      var R = [];
      for (var i=0,len=arr.length; i<len; i+=chunkSize)
          R.push(arr.slice(i,i+chunkSize));
      return R;
  }
  
  function chunkD(arr, n) {
      if ( !arr.length ) {
          return [];
      }
      return [ arr.slice( 0, n ) ].concat( chunkD(arr.slice(n), n) );
  };
  
  function chunkE(array, chunkSize) {
      return [].concat.apply([],
          array.map(function(elem,i) {
              return i%chunkSize ? [] : [array.slice(i,i+chunkSize)];
          })
      );
  }

Test runner

Ready to run.

Testing in
TestOps/sec
chunkA
chunkA(a,100)
ready
chunkB
chunkB(a,100)
ready
chunkC
chunkC(a,100)
ready
chunkE
chunkE(a,100) // crashes
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.