aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-12-12 22:49:04 +0100
committerFlorian Dold <florian.dold@gmail.com>2017-12-12 22:49:04 +0100
commit5a8d880ebd53d6436e78c9f242d20bfa3f50b8b8 (patch)
treeb46676f112e5a7e6c5b42854a5855a206d59b5c1
parentca2a46a8575d66d529accb1ce3aaf97be8f37e2f (diff)
measure time for the operation only while not in queue
-rw-r--r--src/crypto/cryptoApi.ts11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/crypto/cryptoApi.ts b/src/crypto/cryptoApi.ts
index d0ba6ada8..9a21d13a9 100644
--- a/src/crypto/cryptoApi.ts
+++ b/src/crypto/cryptoApi.ts
@@ -73,6 +73,11 @@ interface WorkItem {
* Serial id to identify a matching response.
*/
rpcId: number;
+
+ /**
+ * Time when the work was submitted to a (non-busy) worker thread.
+ */
+ startTime: number;
}
@@ -117,6 +122,7 @@ export class CryptoApi {
operation: work.operation,
};
this.resetWorkerTimeout(ws);
+ work.startTime = timer.performanceNow();
ws.w!.postMessage(msg);
}
@@ -187,6 +193,7 @@ export class CryptoApi {
console.error(`RPC with id ${id} has no registry entry`);
return;
}
+ console.log(`rpc ${currentWorkItem.operation} took ${timer.performanceNow() - currentWorkItem.startTime}ms`);
currentWorkItem.resolve(msg.data.result);
}
@@ -216,11 +223,10 @@ export class CryptoApi {
private doRpc<T>(operation: string, priority: number,
...args: any[]): Promise<T> {
- const start = timer.performanceNow();
const p: Promise<T> = new Promise<T>((resolve, reject) => {
const rpcId = this.nextRpcId++;
- const workItem: WorkItem = {operation, args, resolve, reject, rpcId};
+ const workItem: WorkItem = {operation, args, resolve, reject, rpcId, startTime: 0};
if (this.numBusy === this.workers.length) {
const q = this.workQueues[priority];
@@ -244,7 +250,6 @@ export class CryptoApi {
});
return p.then((r: T) => {
- console.log(`rpc ${operation} took ${timer.performanceNow() - start}ms`);
return r;
});
}