From 569287b15b6482a39f2c816f103574c3b35351f8 Mon Sep 17 00:00:00 2001 From: Marcos Casagrande Date: Tue, 4 Oct 2022 15:48:50 +0200 Subject: perf(ext/fetch): consume body using ops (#16038) This commit adds a fast path to `Request` and `Response` that make consuming request bodies much faster when using `Body#text`, `Body#arrayBuffer`, and `Body#blob`, if the body is a FastStream. Because the response bodies for `fetch` are FastStream, this speeds up consuming `fetch` response bodies significantly. --- cli/bench/http/deno_post_bin.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cli/bench/http/deno_post_bin.js (limited to 'cli/bench/http/deno_post_bin.js') diff --git a/cli/bench/http/deno_post_bin.js b/cli/bench/http/deno_post_bin.js new file mode 100644 index 000000000..33ffeed1b --- /dev/null +++ b/cli/bench/http/deno_post_bin.js @@ -0,0 +1,19 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. + +const addr = Deno.args[0] || "127.0.0.1:4500"; +const [hostname, port] = addr.split(":"); +const listener = Deno.listen({ hostname, port: Number(port) }); +console.log("Server listening on", addr); + +for await (const conn of listener) { + (async () => { + const requests = Deno.serveHttp(conn); + for await (const { respondWith, request } of requests) { + if (request.method == "POST") { + const buffer = await request.arrayBuffer(); + respondWith(new Response(buffer.byteLength)) + .catch((e) => console.log(e)); + } + } + })(); +} -- cgit v1.2.3