summaryrefslogtreecommitdiff
path: root/benchmark/napi/function_call/index.js
diff options
context:
space:
mode:
authorRich Trott <rtrott@gmail.com>2018-06-15 13:03:12 -0700
committerRich Trott <rtrott@gmail.com>2018-06-19 10:37:38 -0700
commitd10742d8913690819209f96a96d1a7e46a70fffe (patch)
tree83326315ac76d9981dad39cf6b6d57f4cde33ab9 /benchmark/napi/function_call/index.js
parent5d4c5d3f714ebf9a032099cc6000ebaf9e53113f (diff)
downloadandroid-node-v8-d10742d8913690819209f96a96d1a7e46a70fffe.tar.gz
android-node-v8-d10742d8913690819209f96a96d1a7e46a70fffe.tar.bz2
android-node-v8-d10742d8913690819209f96a96d1a7e46a70fffe.zip
benchmark: create napi benchmark directory
Move C++ benchmark useful for NAPI to its own directory. This will isolate the benchmark so it can be excluded from testing that applies to all other benchmarks but not this one. PR-URL: https://github.com/nodejs/node/pull/21046 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'benchmark/napi/function_call/index.js')
-rw-r--r--benchmark/napi/function_call/index.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/benchmark/napi/function_call/index.js b/benchmark/napi/function_call/index.js
new file mode 100644
index 0000000000..cbc512c972
--- /dev/null
+++ b/benchmark/napi/function_call/index.js
@@ -0,0 +1,50 @@
+// show the difference between calling a short js function
+// relative to a comparable C++ function.
+// Reports n of calls per second.
+// Note that JS speed goes up, while cxx speed stays about the same.
+'use strict';
+
+const assert = require('assert');
+const common = require('../../common.js');
+
+// this fails when we try to open with a different version of node,
+// which is quite common for benchmarks. so in that case, just
+// abort quietly.
+
+try {
+ var binding = require('./build/Release/binding');
+} catch (er) {
+ console.error('misc/function_call.js Binding failed to load');
+ process.exit(0);
+}
+const cxx = binding.hello;
+
+let napi_binding;
+try {
+ napi_binding = require('./build/Release/napi_binding');
+} catch (er) {
+ console.error('misc/function_call/index.js NAPI-Binding failed to load');
+ process.exit(0);
+}
+const napi = napi_binding.hello;
+
+var c = 0;
+function js() {
+ return c++;
+}
+
+assert(js() === cxx());
+
+const bench = common.createBenchmark(main, {
+ type: ['js', 'cxx', 'napi'],
+ n: [1e6, 1e7, 5e7]
+});
+
+function main({ n, type }) {
+ const fn = type === 'cxx' ? cxx : type === 'napi' ? napi : js;
+ bench.start();
+ for (var i = 0; i < n; i++) {
+ fn();
+ }
+ bench.end(n);
+}