summary refs log tree commit diff
diff options
context:
space:
mode:
authorRichard van der Hoff <1389908+richvdh@users.noreply.github.com>2020-02-19 10:38:20 +0000
committerGitHub <noreply@github.com>2020-02-19 10:38:20 +0000
commitabf1e5c52669bd41ad803d4645809b6efdfcd61d (patch)
tree7bbe7e70a39f63d4c4a3dfab947966c993cc7fba
parentIncrease DB/CPU perf of `_is_server_still_joined` check. (#6936) (diff)
downloadsynapse-abf1e5c52669bd41ad803d4645809b6efdfcd61d.tar.xz
Tiny optimisation for _get_handler_for_request (#6950)
we have hundreds of path_regexes (see #5118), so let's not convert the same
bytes to str for each of them.
Diffstat (limited to '')
-rw-r--r--changelog.d/6950.misc1
-rw-r--r--synapse/http/server.py4
2 files changed, 4 insertions, 1 deletions
diff --git a/changelog.d/6950.misc b/changelog.d/6950.misc
new file mode 100644
index 0000000000..1c88936b8b
--- /dev/null
+++ b/changelog.d/6950.misc
@@ -0,0 +1 @@
+Tiny optimisation for incoming HTTP request dispatch.
diff --git a/synapse/http/server.py b/synapse/http/server.py
index 04bc2385a2..042a605198 100644
--- a/synapse/http/server.py
+++ b/synapse/http/server.py
@@ -353,10 +353,12 @@ class JsonResource(HttpServer, resource.Resource):
         if request.method == b"OPTIONS":
             return _options_handler, "options_request_handler", {}
 
+        request_path = request.path.decode("ascii")
+
         # Loop through all the registered callbacks to check if the method
         # and path regex match
         for path_entry in self.path_regexs.get(request.method, []):
-            m = path_entry.pattern.match(request.path.decode("ascii"))
+            m = path_entry.pattern.match(request_path)
             if m:
                 # We found a match!
                 return path_entry.callback, path_entry.servlet_classname, m.groupdict()