mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
chore(cli/bench): benchmark for raw HTTP ops (#15043)
This commit is contained in:
parent
d7feddfca0
commit
97a7f8d54d
1 changed files with 38 additions and 0 deletions
38
cli/bench/http/deno_http_ops.js
Normal file
38
cli/bench/http/deno_http_ops.js
Normal file
|
@ -0,0 +1,38 @@
|
|||
const addr = Deno.args[0] || "127.0.0.1:4500";
|
||||
const [hostname, port] = addr.split(":");
|
||||
const tcp = Deno.listen({ hostname, port: Number(port) });
|
||||
console.log("Server listening on", addr);
|
||||
|
||||
class Http {
|
||||
id;
|
||||
constructor(id) {
|
||||
this.id = id;
|
||||
}
|
||||
[Symbol.asyncIterator]() {
|
||||
return {
|
||||
next: async () => {
|
||||
const reqEvt = await Deno.core.opAsync("op_http_accept", this.id);
|
||||
return { value: reqEvt ?? undefined, done: reqEvt === null };
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
for await (const conn of tcp) {
|
||||
const id = Deno.core.opSync("op_http_start", conn.rid);
|
||||
const http = new Http(id);
|
||||
(async () => {
|
||||
for await (const req of http) {
|
||||
if (req == null) continue;
|
||||
const { 0: stream } = req;
|
||||
await Deno.core.opAsync(
|
||||
"op_http_write_headers",
|
||||
stream,
|
||||
200,
|
||||
[],
|
||||
"Hello World",
|
||||
);
|
||||
Deno.core.close(stream);
|
||||
}
|
||||
})();
|
||||
}
|
Loading…
Reference in a new issue