substrcount

Benchmark created on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

Setup

SubStringCounter = {
      string : "",
      numberOfsubstrings: 0,
      stringLength: 0    
  }
  SubStringCounter.setString = function(string){
      this.string = string;
  	this.stringLength = string.length;
  	return this;
  }
  
  function setCharAt(str,index,chr) {
      return str.substr(0,index) + chr + str.substr(index+1);
  }
  function moveChar(string, fromIndex){
  	//console.log("passed index: ", fromIndex);
  	let floor = Math.floor(fromIndex/string.length);
  	let remainder = fromIndex%string.length;
  	let newString = "";
  	if((fromIndex > string.length-1)) {
  		//console.log("remainder", remainder)
  		//console.log("repeat: ", floor);
  		newString = moveChar(string, floor+remainder);
  	} else {
  		let charToMove = string.charAt(fromIndex);
  		let charToSwapWith = string.charAt(fromIndex+1);
  		//console.log("regular: ", fromIndex);
  		newString = setCharAt(string, fromIndex, charToSwapWith);
  		newString = setCharAt(newString, fromIndex + 1, charToMove);
  	}
  	return newString;
  }
  let q = 1;
  let string = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefeefeefefeefefeefeefefvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvddvddvdvddvdvddvddvdvddvdvddvddvdvdtbtbbtbtbbtbbtbtbbtbtbbtbbtbtbbtbbtbtbbtbtbbtbbtbtbbtbtbbtbbtbtbbtbbtbtbbtbtbbkrkrrkrkrrkrrkrkrrkrkrrkrrkrkrrkrrkdsdssdsdssdssdsdssdsdsbbbbbbbbbbbbbbbbbbbbbbbbbbbpbpihmiqoyrufakigfvuygumaxadgulmhvgjwkvwztiitrzeekjwofeweljjpovbxcsptoubkbwdhuevenunkdihviazzniynifemteabxzzhbgesjxjwlinoswmplbzqxdskndmbojzmwszzgzavjgfxxtlvtilsncpilivurbkfryjywbwjuohfckgavuflwnjhofthtkwowqfdfdlunousyvengfefdkccmjwajrxzvzbqykfqewbywskdqvdcnfwifebmxrmpdcwwwwvxwvsijnexvlalavsuxtojamyelihms";
  let start_string = string.substring(0, 500+1);
  let tempStrings = [];
  counter = 0;

Test runner

Ready to run.

Testing in
TestOps/sec
substr1
SubStringCounter.countSubStrings = function(){
    let counter = 1;
    let compareLen = this.stringLength-1;
	let tempSubs = [];
	for(let iInit = 1; iInit < this.stringLength; iInit++){
		if (compareLen <= 0){
			break;
		}
		for(let i = 0; i < this.stringLength-compareLen+1; i++){
			let tempSubString = this.string.substring(i, i+compareLen);	
			if(tempSubs.indexOf(tempSubString) === -1){
				tempSubs.push(tempSubString);
				counter++;
			}		
		}
		compareLen = compareLen - 1;
	}
	this.numberOfsubstrings = counter;
}

for(var a0 = 0; a0 < q; a0++){
		//start_string = moveChar(start_string, a0);
		//console.log(start_string, start_string.length);
        count = SubStringCounter;
        count.setString(start_string).countSubStrings();
		if(tempStrings.indexOf(start_string) !== -1){
			continue;
		}
		if(count.numberOfsubstrings){
			console.log("Result: >>>>>> ", start_string, count.numberOfsubstrings);
			counter++;
		}
		tempStrings.push(start_string);
		
		//console.log("Result: >>>>>> ", start_string, count.numberOfsubstrings);		
}
console.log(counter);
ready
substr2
SubStringCounter.countSubStrings = function(){
    let counter = 1;
    let compareLen = this.stringLength-1;
	let tempSubs = {};
	for(let iInit = 1; iInit < this.stringLength; iInit++){
		if (compareLen <= 0){
			break;
		}
		for(let i = 0; i < this.stringLength-compareLen+1; i++){
			let tempSubString = this.string.substring(i, i+compareLen);	
			if(typeof tempSubs[tempSubString] === "undefined"){
				tempSubs[tempSubString]=null;
				counter++;
			}		
		}
		compareLen = compareLen - 1;
        tempSubs={};
	}
	this.numberOfsubstrings = counter;
}
for(var a0 = 0; a0 < q; a0++){
		//start_string = moveChar(start_string, a0);
		//console.log(start_string, start_string.length);
        count = SubStringCounter;
        count.setString(start_string).countSubStrings();
		if(tempStrings.indexOf(start_string) !== -1){
			continue;
		}
		if(count.numberOfsubstrings){
			console.log("Result: >>>>>> ", start_string, count.numberOfsubstrings);
			counter++;
		}
		tempStrings.push(start_string);
		
		//console.log("Result: >>>>>> ", start_string, count.numberOfsubstrings);		
}
console.log(counter);
ready
substr3
SubStringCounter.countSubStrings = function(){
    let counter = 1;
    let compareLen = this.stringLength-1;
	let tempSubs = {};
	for(let iInit = 1; iInit < this.stringLength; iInit++){
		if (compareLen <= 0){
			break;
		}
		for(let i = 0; i < this.stringLength-compareLen+1; i++){
			let tempSubString = this.string.substring(i, i+compareLen);	
			if(typeof tempSubs[tempSubString] === "undefined"){
				tempSubs[tempSubString]=null;
				counter++;
			}		
		}
		compareLen = compareLen - 1;
        tempSubs={};
	}
	this.numberOfsubstrings = counter;
}
for(var a0 = 0; a0 < q; a0++){
		//start_string = moveChar(start_string, a0);
		//console.log(start_string, start_string.length);
        count = SubStringCounter;
        count.setString(start_string).countSubStrings();
		if(tempStrings.indexOf(start_string) !== -1){
			continue;
		}
		if(count.numberOfsubstrings){
			console.log("Result: >>>>>> ", start_string, count.numberOfsubstrings);
			counter++;
		}
		tempStrings.push(start_string);
		
		//console.log("Result: >>>>>> ", start_string, count.numberOfsubstrings);		
}
console.log(counter);
ready

Revisions

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