Run details:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2952.0 Safari/537.36
Chrome 57
Mac OS X 10.11.6
Other
8 years ago
Test name Executions per second
native repeat 2046633.9 Ops/sec
stupid repeatify 8.5 Ops/sec
repeatifyWithArrayAndJoin 0.0 Ops/sec
repeatifyWithNewArray 55.2 Ops/sec
Script Preparation code:
x
 
function repeatify(string, repetitions) {
   if (repetitions < 0 || repetitions === Infinity) {
      throw new RangeError('Invalid repetitions number');
   }
 
   let result = '';
 
   for (let i = 0; i < repetitions; i++) {
      result += string;
   }
 
   return result;
}
function repeatifyWithArrayAndJoin(string, repetitions) {
   if (repetitions < 0 || repetitions === Infinity) {
      throw new RangeError('Invalid repetitions number');
   }
 
   const result = [];
 
   for (let i = 0; i < repetitions; i++) {
      result.push(string);
   }
 
   return result.join('');
}
function repeatifyWithNewArray(string, repetitions) {
   if (repetitions < 0 || repetitions === Infinity) {
      throw new RangeError('Invalid repetitions number');
   }
  
   return new Array(repetitions).join(string);
}
function _checkRepeations(repetitions) {
    if (repetitions < 0 || repetitions === Infinity) {
      throw new RangeError('Invalid repetitions number');
   }
}
function repeatifyWithNewArrayAndExternalThrow(string, repetitions) {
   _checkRepeations(repetitions);
  
   return new Array(repetitions).join(string);
}
function repeatifyWithNewArrayAndExternalThrowWithProps(string, repetitions) {
   this.checkRepeations(repetitions);
  
   return new this.Array(repetitions).join(string);
}
var ctx = {
    checkRepeations: _checkRepeations,
    Array: Array
}
repeatifyWithNewArrayAndExternalThrowWithProps = repeatifyWithNewArrayAndExternalThrowWithProps.bind(ctx);
var TEST_STRING = 'home, sweet home';
var COUNT = 1e6;
Tests:
  • native repeat

     
    TEST_STRING.repeat(COUNT);
  • stupid repeatify

     
    repeatify(TEST_STRING, COUNT);
  • repeatifyWithArrayAndJoin

     
    repeatifyWithArrayAndJoin(TEST_STRING, COUNT);
  • repeatifyWithNewArray

     
    repeatifyWithNewArray(TEST_STRING, COUNT);
  • repeatifyWithNewArrayAndExternalThrow

     
    repeatifyWithNewArrayAndExternalThrow(TEST_STRING, COUNT);
  • repeatifyWithNewArrayAndExternalThrowWithProps

     
    repeatifyWithNewArrayAndExternalThrowWithProps(TEST_STRING, COUNT);