diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2022-07-02 19:39:25 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-02 19:39:25 +0530 |
commit | 97a7f8d54dd94e258ece3c42871797e08530738c (patch) | |
tree | bfc2b7b5550537b0556560abbeb11abe3512654d /cli/bench | |
parent | d7feddfca0eed8faf43d52e625f6fb42327310ef (diff) |
chore(cli/bench): benchmark for raw HTTP ops (#15043)
Diffstat (limited to 'cli/bench')
-rw-r--r-- | cli/bench/http/deno_http_ops.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/cli/bench/http/deno_http_ops.js b/cli/bench/http/deno_http_ops.js new file mode 100644 index 000000000..aac5cea72 --- /dev/null +++ b/cli/bench/http/deno_http_ops.js @@ -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); + } + })(); +} |