summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorTrevor Norris <trev.norris@gmail.com>2015-11-11 00:15:15 -0700
committerTrevor Norris <trev.norris@gmail.com>2015-12-17 17:29:16 -0700
commit36e8a2c63dc17d7f6e473d0ce5bfa67f8d0fe31d (patch)
treeb6413988b2475a75045be2c735350f0a8cf860a1 /benchmark
parent946315f7d81826f8edd4b9ada87f4285cf88539e (diff)
downloadnode-new-36e8a2c63dc17d7f6e473d0ce5bfa67f8d0fe31d.tar.gz
node: improve performance of hrtime()
process.hrtime() was performing too many operations in C++ that could be done faster in JS. Move those operations over by creating a length 4 Uint32Array and perform bitwise operations on the seconds so that it was unnecessary for the native API to do any object creation or set any fields. This has improved performance from ~350 ns/op to ~65 ns/op. Light benchmark included to demonstrate the performance change. PR-URL: https://github.com/nodejs/node/pull/3780 Reviewed-By: Fedor Indutny <fedor@indutny.com>
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/misc/bench-hrtime.js18
1 files changed, 18 insertions, 0 deletions
diff --git a/benchmark/misc/bench-hrtime.js b/benchmark/misc/bench-hrtime.js
new file mode 100644
index 0000000000..661dff43b0
--- /dev/null
+++ b/benchmark/misc/bench-hrtime.js
@@ -0,0 +1,18 @@
+'use strict';
+
+const common = require('../common');
+
+const bench = common.createBenchmark(main, {
+ n: [1e6]
+});
+
+
+function main(conf) {
+ const n = conf.n >>> 0;
+
+ bench.start();
+ for (var i = 0; i < n; i++) {
+ process.hrtime();
+ }
+ bench.end(n);
+}