diff options
| author | Divy Srivastava <dj.srivastava23@gmail.com> | 2022-10-27 06:40:48 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-27 19:10:48 +0530 |
| commit | 02187966c108fd50354c8de57bab443a5b262373 (patch) | |
| tree | 8076ec580cef65797897303a6bb3866f74227bd3 /cli | |
| parent | bfd9912e1faa30a92472252b77878714e668a3d4 (diff) | |
perf(core): generate inlined wrappers for async ops (#16428)
V8's JIT can do a better job knowing the argument count and also enable
fast call path (in future).
This also lets us call async ops without `opAsync`:
```js
const { ops } = Deno.core;
await ops.op_void_async();
```
this patch: 4405286 ops/sec
main: 3508771 ops/sec
Diffstat (limited to 'cli')
| -rw-r--r-- | cli/bench/async_ops.js | 5 | ||||
| -rw-r--r-- | cli/tests/unit/metrics_test.ts | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/cli/bench/async_ops.js b/cli/bench/async_ops.js index ac4eb6858..2647accbd 100644 --- a/cli/bench/async_ops.js +++ b/cli/bench/async_ops.js @@ -5,7 +5,7 @@ let [total, count] = typeof Deno !== "undefined" : [process.argv[2], process.argv[3]]; total = total ? parseInt(total, 0) : 50; -count = count ? parseInt(count, 10) : 100000; +count = count ? parseInt(count, 10) : 1000000; async function bench(fun) { const start = Date.now(); @@ -16,4 +16,5 @@ async function bench(fun) { if (--total) queueMicrotask(() => bench(fun)); } -bench(() => Deno.core.opAsync("op_void_async")); +const { ops } = Deno.core; +bench(() => ops.op_void_async()); diff --git a/cli/tests/unit/metrics_test.ts b/cli/tests/unit/metrics_test.ts index 82ff7ddd0..7f78d4578 100644 --- a/cli/tests/unit/metrics_test.ts +++ b/cli/tests/unit/metrics_test.ts @@ -84,6 +84,6 @@ Deno.test(function opNamesMatch() { // @ts-ignore: Deno.core allowed Deno.core.opNames().sort(), // @ts-ignore: Deno.core allowed - Object.keys(Deno.core.ops).sort(), + Object.keys(Deno.core.ops).sort().filter((name) => name !== "asyncOpsInfo"), ); }); |
