Replace All vs Split/Join
JavaScript performance comparison
Preparation code
<script>
Benchmark.prototype.setup = function() {
str = "Test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test abc test test abc test...";
reg_exp = new RegExp('abc', 'g');
replaceAllRecursive = function(string, replace_what, replace_with, prevstring) {
if (prevstring && string === prevstring)
return string;
prevstring = string.replace(replace_what, replace_with);
return replaceAllRecursive(prevstring, replace_what, replace_with, string);
};
replaceAllLoopy = function(string, replace_what, replace_with) {
while(true){
var newstring = string.replace(replace_what, replace_with);
if (newstring === string) return string;
string = newstring;
}
};
String.prototype.replaceAll = function(replace_what, replace_with) {
var oldstring = this;
while (true) {
var newstring = oldstring.replace(replace_what, replace_with);
if (newstring === oldstring) return oldstring;
oldstring = newstring;
}
};
};
</script>
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
Test | Ops/sec | |
---|---|---|
split & join
|
|
pending… |
replace with inline regexp
|
|
pending… |
replace with cached regexp
|
|
pending… |
recursive replace()
|
|
pending… |
iterative replace()
|
|
pending… |
iterative replace() as String method
|
|
pending… |
Compare results of other browsers
Revisions
You can edit these tests or add even more tests to this page by appending /edit
to the URL.
- Revision 1: published
- Revision 2: published
- Revision 3: published
- Revision 4: published Tom
- Revision 5: published
- Revision 7: published
- Revision 8: published
- Revision 9: published
- Revision 10: published
- Revision 11: published
- Revision 12: published
- Revision 13: published
- Revision 14: published
- Revision 15: published
- Revision 16: published
- Revision 17: published
- Revision 18: published
- Revision 19: published
- Revision 21: published
- Revision 22: published
- Revision 23: published
- Revision 24: published
- Revision 25: published
- Revision 26: published
- Revision 27: published
- Revision 28: published
- Revision 30: published
- Revision 32: published
- Revision 33: published
- Revision 36: published my name
- Revision 38: published
- Revision 39: published
- Revision 41: published
- Revision 42: published
- Revision 43: published MB
- Revision 44: published
- Revision 46: published Gabriel Walt
- Revision 47: published
- Revision 48: published
- Revision 49: published
- Revision 50: published
- Revision 51: published
- Revision 52: published rmetzler
- Revision 53: published
- Revision 54: published
- Revision 55: published
- Revision 56: published
- Revision 57: published
- Revision 59: published
- Revision 63: published
- Revision 64: published Jonathan Derin
- Revision 65: published Sivarama Subramanian
- Revision 66: published Sivarama Subramanian
0 Comments