Last active
December 30, 2017 23:27
-
-
Save joshpowlison/994cc25867f34646dcfbbddf9257c8ff to your computer and use it in GitHub Desktop.
Setting a variable in a check makes .test faster than .indexOf (http://jsbench.github.io/#994cc25867f34646dcfbbddf9257c8ff) #jsbench #jsperf
This file contains 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
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"/> | |
<title>Setting a variable in a check makes .test faster than .indexOf</title> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/1.0.0/benchmark.min.js"></script> | |
<script src="./suite.js"></script> | |
</head> | |
<body> | |
<h1>Open the console to view the results</h1> | |
<h2><code>cmd + alt + j</code> or <code>ctrl + alt + j</code></h2> | |
</body> | |
</html> |
This file contains 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
"use strict"; | |
(function (factory) { | |
if (typeof Benchmark !== "undefined") { | |
factory(Benchmark); | |
} else { | |
factory(require("benchmark")); | |
} | |
})(function (Benchmark) { | |
var suite = new Benchmark.Suite; | |
Benchmark.prototype.setup = function () { | |
var input="xxxxxxxxxxxxxxxxabcxxxxxxxxxxx"; | |
var potato; | |
}; | |
suite.add("Regex; adjust input", function () { | |
//Regex; adjust input | |
if (/abc/.test(input) !== false) { | |
input="test"; | |
} | |
}); | |
suite.add("indexOf; adjust input", function () { | |
//indexOf; adjust input | |
if(input.indexOf("abc")!==-1) { | |
input="test"; | |
} | |
}); | |
suite.add("Regex; do nothing", function () { | |
//Regex; do nothing | |
if (/abc/.test(input) !== false) { | |
} | |
}); | |
suite.add("indexOf; do nothing", function () { | |
//indexOf; do nothing | |
if(input.indexOf("abc")!==-1) { | |
} | |
}); | |
suite.add("Regex; adjust other", function () { | |
//Regex; adjust other | |
if (/abc/.test(input) !== false) { | |
potato="test"; | |
} | |
}); | |
suite.add("indexOf; adjust other", function () { | |
//indexOf; adjust other | |
if(input.indexOf("abc")!==-1) { | |
potato="test"; | |
} | |
}); | |
suite.on("cycle", function (evt) { | |
console.log(" - " + evt.target); | |
}); | |
suite.on("complete", function (evt) { | |
console.log(new Array(30).join("-")); | |
var results = evt.currentTarget.sort(function (a, b) { | |
return b.hz - a.hz; | |
}); | |
results.forEach(function (item) { | |
console.log((idx + 1) + ". " + item); | |
}); | |
}); | |
console.log("Setting a variable in a check makes .test faster than .indexOf"); | |
console.log(new Array(30).join("-")); | |
suite.run(); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment