jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
specialString = "\\$&";
</script>
var html = document.body.innerHTML;
var map = {
"&": "&",
"'": "'",
'"': """,
"<": "<",
">": ">"
};
function replaceEntity(chr) {
return map[chr];
}
var tempElement = $(document.createElement("div"));
String.prototype.replaceAll = function(str1, str2, ignore) {
return this.replace(new RegExp(str1.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g, specialString), (ignore ? "gi" : "g")), (typeof(str2) == "string") ? str2.replace(/\$/g, "$$$$") : str2);
};
String.prototype.htmlEncode = function() {
return this.replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');
};
var re_amp = /&/g;
var re_squo = /'/g;
var re_dquo = /"/g;
var re_lt = /</g;
var re_gt = />/g;
var DOMtext = document.createTextNode("test");
var DOMnative = document.createElement("span");
DOMnative.appendChild(DOMtext);
var RE_amp = new RegExp("&", "g");
var RE_squo = new RegExp("'", "g");
var RE_dquo = new RegExp("\"", "g");
var RE_lt = new RegExp("<", "g");
var RE_gt = new RegExp(">", "g");
String.prototype.htmlSafe = function() {
return this
.replace(RE_amp, '&')
.replace(RE_dquo, '"')
.replace(RE_squo, ''')
.replace(RE_lt, '<')
.replace(RE_gt, '>');
};
String.prototype.replaceAll2 = function(s1, s2) {
return this.split(s1).join(s2);
};
var expected = html.replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');
DOMtext.nodeValue = html;
var expectedHTML = DOMnative.innerHTML;
Ready to run.
Test | Ops/sec | |
---|---|---|
multiple replace() |
| ready |
single replace with map |
| ready |
single replace with switch |
| ready |
use jQuery |
| ready |
use jQuery with pre-created element |
| ready |
predefined regexp literals |
| ready |
.innerHTML |
| ready |
string replaceAll method |
| ready |
replace chain on prototype |
| ready |
single replace with pre-defined function |
| ready |
.nodeValue |
| ready |
replace new RegExp |
| ready |
replace new RegExp literal |
| ready |
replace new RegExp literal prototype |
| ready |
split join replace (prototype) |
| ready |
split join inline |
| ready |
multiple replace strings |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.