Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Repeating String
(version: 0)
Comparing performance of:
Simple for loop vs Extended for loop vs Log based
Created:
9 years ago
by:
Guest
Jump to the latest result
Tests:
Simple for loop
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; } repeatify('*', 10000);
Extended for loop
function repeatify2(string, repetitions) { if (repetitions < 0 || repetitions === Infinity) { throw new RangeError('Invalid repetitions number'); } const isEven = repetitions % 2 === 0; const iterations = Math.floor(repetitions / 2); const stringTwice = string + string; let result = ''; for (let i = 0; i < iterations; i++) { result += stringTwice; } if (!isEven) { result += string; } return result; } repeatify2('*', 10000);
Log based
function repeatify3(string, repetitions) { if (repetitions < 0 || repetitions === Infinity) { throw new RangeError('Invalid repetitions number'); } const cache = new Map(); function repeat(string, repetitions) { if (repetitions === 0) { return ''; } const log = Math.floor(Math.log2(repetitions)); let result; if (cache.has(log)) { result = cache.get(log); } else { result = string; for (let i = 1; i <= log; i++) { result += result; cache.set(i, result); } } const repetitionsProcessed = Math.pow(2, log); const repetitionsLeft = repetitions - repetitionsProcessed; return result + repeat(string, repetitionsLeft); } return repeat(string, repetitions); } repeatify3('*', 10000);
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (3)
Previous results
Fork
Test case name
Result
Simple for loop
Extended for loop
Log based
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Related benchmarks:
Repeating String
Repeating String
repeat
Trimming multiple leading/trailing characters
Comments
Confirm delete:
Do you really want to delete benchmark?