From 82bc2cfba987337bccc5e7206c2ffd708cff6641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=2E=20K=C3=A4rkk=C3=A4inen?= Date: Sun, 8 Sep 2019 11:49:51 +0300 Subject: [PATCH] Replace encode_body with faster implementation based on f-string. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Benchmarks: def encode_body(data): try: # Try to encode it regularly return data.encode() except AttributeError: # Convert it to a str if you can't return str(data).encode() def encode_body2(data): return f"{data}".encode() def encode_body3(data): return str(data).encode() data_str, data_int = "foo", 123 %timeit encode_body(data_int) 928 ns ± 2.96 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) %timeit encode_body2(data_int) 280 ns ± 2.09 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) %timeit encode_body3(data_int) 387 ns ± 1.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) %timeit encode_body(data_str) 202 ns ± 1.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) %timeit encode_body2(data_str) 197 ns ± 0.507 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each) %timeit encode_body3(data_str) 313 ns ± 1.28 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) --- sanic/response.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/sanic/response.py b/sanic/response.py index 92362c3d..95faa7e6 100644 --- a/sanic/response.py +++ b/sanic/response.py @@ -23,12 +23,7 @@ except BaseException: class BaseHTTPResponse: def _encode_body(self, data): - try: - # Try to encode it regularly - return data.encode() - except AttributeError: - # Convert it to a str if you can't - return str(data).encode() + return f"{data}".encode() def _parse_headers(self): return format_http1(self.headers.items())