Last active
December 4, 2020 08:04
-
-
Save wooandoo/823cf0defbb913bb03faef873a8638dc to your computer and use it in GitHub Desktop.
call function by matching #jsbench #jsperf (https://jsbench.github.io/#823cf0defbb913bb03faef873a8638dc) #jsbench #jsperf
This file contains hidden or 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>call function by matching #jsbench #jsperf</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 hidden or 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 () { | |
const string_entity = { | |
_type: "string-3", | |
message: "hello" | |
} | |
const number_entity = { | |
_type: 3, | |
message: "hello" | |
} | |
const match_string = (entity) => { | |
switch(entity._type) { | |
case "string-1": return get_message(entity); | |
case "string-2": return get_message(entity); | |
case "string-3": return get_message(entity); | |
} | |
} | |
const match_number = (entity) => { | |
switch(entity._type) { | |
case 1: return get_message(entity); | |
case 2: return get_message(entity); | |
case 3: return get_message(entity); | |
} | |
} | |
class Entity { | |
constructor(message) { | |
this.message = message | |
this.entity = { | |
message | |
} | |
} | |
get_message() { | |
return this.message | |
} | |
call_get_message() { | |
return get_message(this.entity) | |
} | |
} | |
const entity = new Entity("hello") | |
const get_message = (entity) => entity.message | |
}; | |
suite.add("match_string(string_entity)", function () { | |
match_string(string_entity) | |
}); | |
suite.add("match_number(number_entity)", function () { | |
match_number(number_entity) | |
}); | |
suite.add("get_message(string_entity)", function () { | |
get_message(string_entity) | |
}); | |
suite.add("entity.get_message()", function () { | |
entity.get_message() | |
}); | |
suite.add("entity.call_get_message()", function () { | |
entity.call_get_message() | |
}); | |
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("call function by matching #jsbench #jsperf"); | |
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