Skip to content

Instantly share code, notes, and snippets.

@leite08
Created December 28, 2024 21:56
Show Gist options
  • Save leite08/9ebe4cadca90a04f6ca7870e005c3a4d to your computer and use it in GitHub Desktop.
Save leite08/9ebe4cadca90a04f6ca7870e005c3a4d to your computer and use it in GitHub Desktop.
Compare different approaches to string replace all in JS for performance
/**
* 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