summaryrefslogtreecommitdiff
path: root/js/performance.ts
diff options
context:
space:
mode:
authorDmitry Sharshakov <sh7dm@outlook.com>2019-02-02 09:27:42 +0300
committerRyan Dahl <ry@tinyclouds.org>2019-02-02 01:27:42 -0500
commit16ed1f2545b34851ebdb9095251236fb51e39f5d (patch)
treeef88386129adefaf0ed22f150dff01b1f134563e /js/performance.ts
parente5899b14e268b6b636b04b8f5a78df4c23e00478 (diff)
Add performance.now (#1633)
Diffstat (limited to 'js/performance.ts')
-rw-r--r--js/performance.ts29
1 files changed, 29 insertions, 0 deletions
diff --git a/js/performance.ts b/js/performance.ts
new file mode 100644
index 000000000..73378b15c
--- /dev/null
+++ b/js/performance.ts
@@ -0,0 +1,29 @@
+// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
+import * as msg from "gen/msg_generated";
+import { sendSync } from "./dispatch";
+import * as flatbuffers from "./flatbuffers";
+import { assert } from "./util";
+
+export class Performance {
+ timeOrigin = 0;
+
+ constructor() {
+ this.timeOrigin = new Date().getTime();
+ }
+
+ /** Returns a current time from Deno's start
+ *
+ * const t = performance.now();
+ * console.log(`${t} ms since start!`);
+ */
+ now(): number {
+ const builder = flatbuffers.createBuilder();
+ msg.Now.startNow(builder);
+ const inner = msg.Now.endNow(builder);
+ const baseRes = sendSync(builder, msg.Any.Now, inner)!;
+ assert(msg.Any.NowRes === baseRes.innerType());
+ const res = new msg.NowRes();
+ assert(baseRes.inner(res) != null);
+ return res.time().toFloat64() - this.timeOrigin;
+ }
+}