String.repeat() mesure
Testing performance of different variants of String.repeat() http://stackoverflow.com/questions/202605/repeat-string-javascript/5450113#5450113
by disfated
HTML
<script src="http://www.broofa.com/Tools/JSLitmus/JSLitmus.js"></script>
JavaScript
var tests = {
// https://github.com/sstephenson/prototype/blob/master/src/prototype/lang/string.js#L539
// http://stackoverflow.com/questions/202605/repeat-string-javascript/2433358#2433358
'new Array.join() (prototypejs)' : function(count) {
return count < 1 ? '' : new Array(count + 1).join(this.valueOf());
},
// http://stackoverflow.com/q/202605/489553
// optimized: this.valueOf(), while loop
'array.push().join()' : function(count) {
var result = [], pattern = this.valueOf(), i = count;
while (i--) result.push(pattern);
return result.join('');
},
// http://stackoverflow.com/questions/202605/repeat-string-javascript/202626#202626
// optimized: this.valueOf(), while loop
'(result += string) x count' : function(count) {
var result = '', pattern = this.valueOf(), i = count;
while (i--) result += pattern;
return result;
},
// http://stackoverflow.com/questions/202605/repeat-string-javascript/4152613#4152613
'result += growing pattern' : function(count){
var result = '';
var pattern = this;
while (count > 0) {
if (count & 1) result += pattern;
count >>= 1;
pattern += pattern;
};
return result;
},
// final: growing pattern + prototypejs check (count < 1)
'final' : function(count) {
if (count < 1) return '';
var result = '', pattern = this.valueOf();
while (count > 0) {
if (count & 1) result += pattern;
count >>= 1, pattern += pattern;
};
return result;
},
// final: growing pattern + prototypejs check + unroll
'final unrolled' : function(count) {
if (count < 1) return '';
var result = '', pattern = this.valueOf();
while (count > 1) {
if (count & 1) result += pattern;
count >>= 1, pattern += pattern;
}
...