String split by length (v6)

Revision 6 of this benchmark created on


Preparation HTML

<script>

function fasterSplit(str,len){
  var ret=[],strlen=str.length,off=0
  do {
    ret.push(str.substr(off,len)); 
 off+=len
  } while (off<strlen)
  return ret
}

splitRegex = function(str, len) {
  var regex = new RegExp('[\\s\\S]{1,' + len + '}', 'g');
  return str.match(regex);
}

var splitRegexCached = (function(){
  var regexCache = {};
  return( function(str, len) {
    var regex = regexCache[len] || (regexCache[len] = new RegExp('[\\s\\S]{1,' + len + '}', 'g'));
    return str.match(regex);
  });
})();

function splitSlice(str, len) {
  var ret = [ ];
  for (var offset = 0, strLen = str.length; offset < strLen; offset += len) {
    ret.push(str.slice(offset, len + offset));
  }
  return ret;
}

function splitSubstr(str, len) {
  var ret = [ ];
  for (var offset = 0, strLen = str.length; offset < strLen; offset += len) {
    ret.push(str.substr(offset, len));
  }
  return ret;
}

var tinyString  = (new Array(39)).join('abcdefghijklmnopqrstuvwxyz');
var shortString  = (new Array(385)).join('abcdefghijklmnopqrstuvwxyz');
var mediumString  = (new Array(3856)).join('abcdefghijklmnopqrstuvwxyz');
var longString  = (new Array(38462)).join('abcdefghijklmnopqrstuvwxyz');
var spanArray = [6666, 2, 3339, 5, 1620, 13, 847, 22, 521, 46,  254, 88, 145];
var spanLength = spanArray.length;
var i = 0, span;
</script>

Teardown



            i = 0;
        
  

Test runner

Ready to run.

Testing in
TestOps/sec
fasterSplit
span = spanArray[i++ % spanLength];
fasterSplit(tinyString, span);
fasterSplit(shortString, span);
fasterSplit(mediumString, span);
fasterSplit(longString, span);
ready
Regex (Cached)
span = spanArray[i++ % spanLength];
splitRegexCached(tinyString, span);
splitRegexCached(shortString, span);
splitRegexCached(mediumString, span);
splitRegexCached(longString, span);
ready
string.Substr
span = spanArray[i++ % spanLength];
splitSubstr(tinyString, span);
splitSubstr(shortString, span);
splitSubstr(mediumString, span);
splitSubstr(longString, span);
ready
string.Slice
span = spanArray[i++ % spanLength];
splitSlice(tinyString, span);
splitSlice(shortString, span);
splitSlice(mediumString, span);
splitSlice(longString, span);
ready

Revisions

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