Created
December 28, 2024 21:56
-
-
Save leite08/9ebe4cadca90a04f6ca7870e005c3a4d to your computer and use it in GitHub Desktop.
Compare different approaches to string replace all in JS for performance
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* As of 2024-12-28, Mac M1 Max | |
* | |
* replace took 592ms | |
* replaceAll took 641ms | |
* replace regex took 485ms | |
* replace NEW regex took 902ms | |
* replaceAll regex took 691ms | |
* replaceAll NEW regex took 1105ms | |
*/ | |
function main() { | |
const iterations = 10_000_000; | |
const original = "1234567890abcdefghijklmnopqrstuvwxyz-+=;'"; | |
let start = Date.now(); | |
for (let i = 0; i < iterations; i++) { | |
// Not really fair as this only replaces the first instance of the string | |
original.replace("-", ""); | |
} | |
console.log(`replace took ${Date.now() - start}ms`); | |
start = Date.now(); | |
for (let i = 0; i < iterations; i++) { | |
original.replaceAll("-", ""); | |
} | |
console.log(`replaceAll took ${Date.now() - start}ms`); | |
start = Date.now(); | |
for (let i = 0; i < iterations; i++) { | |
original.replace(/-/g, ""); | |
} | |
console.log(`replace regex took ${Date.now() - start}ms`); | |
start = Date.now(); | |
for (let i = 0; i < iterations; i++) { | |
const reg = new RegExp("-", "g"); | |
original.replace(reg, ""); | |
} | |
console.log(`replace NEW regex took ${Date.now() - start}ms`); | |
start = Date.now(); | |
for (let i = 0; i < iterations; i++) { | |
original.replaceAll(/-/g, ""); | |
} | |
console.log(`replaceAll regex took ${Date.now() - start}ms`); | |
start = Date.now(); | |
for (let i = 0; i < iterations; i++) { | |
const reg = new RegExp("-", "g"); | |
original.replaceAll(reg, ""); | |
} | |
console.log(`replaceAll NEW regex took ${Date.now() - start}ms`); | |
} | |
main(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment