mirror of
https://github.com/denoland/deno.git
synced 2025-08-03 18:38:33 +00:00
refactor: new optimized op-layer using serde_v8 (#9843)
- Improves op performance. - Handle op-metadata (errors, promise IDs) explicitly in the op-layer vs per op-encoding (aka: out-of-payload). - Remove shared queue & custom "asyncHandlers", all async values are returned in batches via js_recv_cb. - The op-layer should be thought of as simple function calls with little indirection or translation besides the conceptually straightforward serde_v8 bijections. - Preserve concepts of json/bin/min as semantic groups of their inputs/outputs instead of their op-encoding strategy, preserving these groups will also facilitate partial transitions over to v8 Fast API for the "min" and "bin" groups
This commit is contained in:
parent
6dc3549a81
commit
fec1b2a5a4
33 changed files with 794 additions and 1811 deletions
|
@ -7,35 +7,38 @@ unitTest(async function metrics(): Promise<void> {
|
|||
const dataMsg = new Uint8Array([13, 13, 13]); // "\r\r\r",
|
||||
await Deno.stdout.write(dataMsg);
|
||||
|
||||
// WARNING: bytesReceived & bytesSentControl are now always zero
|
||||
// following https://github.com/denoland/deno/pull/9843
|
||||
|
||||
const m1 = Deno.metrics();
|
||||
assert(m1.opsDispatched > 0);
|
||||
assert(m1.opsCompleted > 0);
|
||||
assert(m1.bytesSentControl > 0);
|
||||
assert(m1.bytesSentControl === 0);
|
||||
assert(m1.bytesSentData >= 0);
|
||||
assert(m1.bytesReceived > 0);
|
||||
assert(m1.bytesReceived === 0);
|
||||
const m1OpWrite = m1.ops["op_write_async"];
|
||||
assert(m1OpWrite.opsDispatchedAsync > 0);
|
||||
assert(m1OpWrite.opsCompletedAsync > 0);
|
||||
assert(m1OpWrite.bytesSentControl > 0);
|
||||
assert(m1OpWrite.bytesSentControl === 0);
|
||||
assert(m1OpWrite.bytesSentData >= 0);
|
||||
assert(m1OpWrite.bytesReceived > 0);
|
||||
assert(m1OpWrite.bytesReceived === 0);
|
||||
|
||||
await Deno.stdout.write(dataMsg);
|
||||
|
||||
const m2 = Deno.metrics();
|
||||
assert(m2.opsDispatchedAsync > m1.opsDispatchedAsync);
|
||||
assert(m2.opsCompletedAsync > m1.opsCompletedAsync);
|
||||
assert(m2.bytesSentControl > m1.bytesSentControl);
|
||||
assert(m2.bytesSentControl === m1.bytesSentControl);
|
||||
assert(m2.bytesSentData >= m1.bytesSentData + dataMsg.byteLength);
|
||||
assert(m2.bytesReceived > m1.bytesReceived);
|
||||
assert(m2.bytesReceived === m1.bytesReceived);
|
||||
const m2OpWrite = m2.ops["op_write_async"];
|
||||
assert(m2OpWrite.opsDispatchedAsync > m1OpWrite.opsDispatchedAsync);
|
||||
assert(m2OpWrite.opsCompletedAsync > m1OpWrite.opsCompletedAsync);
|
||||
assert(m2OpWrite.bytesSentControl > m1OpWrite.bytesSentControl);
|
||||
assert(m2OpWrite.bytesSentControl === m1OpWrite.bytesSentControl);
|
||||
assert(
|
||||
m2OpWrite.bytesSentData >= m1OpWrite.bytesSentData + dataMsg.byteLength,
|
||||
);
|
||||
assert(m2OpWrite.bytesReceived > m1OpWrite.bytesReceived);
|
||||
assert(m2OpWrite.bytesReceived === m1OpWrite.bytesReceived);
|
||||
});
|
||||
|
||||
unitTest(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue