Skip to content

Instantly share code, notes, and snippets.

@amakhrov
Created September 22, 2016 05:47
Show Gist options
  • Save amakhrov/e52a9c1430d2103f676c75118aa5eba6 to your computer and use it in GitHub Desktop.
Save amakhrov/e52a9c1430d2103f676c75118aa5eba6 to your computer and use it in GitHub Desktop.
Compare performance of inlined try/catch vs try/catch extracted into a separate function
function parse(json, defaultValue) {
try {
return JSON.parse(json);
} catch (e) {
return defaultValue;
}
}
var json = JSON.stringify({a: 1, b: 2, c: 3, d: 4});
function mainSeparate() {
var data = parse(json, {});
var sum = 0;
var keys = Object.keys(data);
for (var i = 0, l = keys.length; i < l; i++) {
sum = sum + data[keys[i]];
}
}
function mainInline() {
var data;
try {
data = JSON.parse(json);
} catch (e) {
data = {};
}
var sum = 0;
var keys = Object.keys(data);
for (var i = 0, l = keys.length; i < l; i++) {
sum = sum + data[keys[i]];
}
}
function perf(fn, iterations = 10000000) {
var start = Date.now();
for (var i = 0; i < iterations; i++) {
fn();
}
var duration = Date.now() - start;
console.log(`"${fn.name}()" duration: ${duration}ms`);
}
//perf(mainSeparate);
perf(mainInline);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment