From d55e97e3139f355396f014beca11958ab7a23228 Mon Sep 17 00:00:00 2001 From: preciz Date: Thu, 20 Aug 2026 18:18:00 +0200 Subject: [PATCH] Optimize template compilation reducer Reuse the existing paths list since it is sorted before hashing regardless of its order. --- lib/phoenix/template.ex | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/phoenix/template.ex b/lib/phoenix/template.ex index 171291e..a452d86 100644 --- a/lib/phoenix/template.ex +++ b/lib/phoenix/template.ex @@ -409,15 +409,14 @@ defmodule Phoenix.Template do engines = given_engines || engines() paths = find_all(root, pattern, engines) - {triplets, {paths, engines}} = - Enum.map_reduce(paths, {[], %{}}, fn path, {acc_paths, acc_engines} -> + {triplets, engines} = + Enum.map_reduce(paths, %{}, fn path, acc_engines -> ext = Path.extname(path) |> String.trim_leading(".") |> String.to_atom() engine = Map.fetch!(engines, ext) name = converter.(path) body = engine.compile(path, name) - map = {path, name, body} - reduce = {[path | acc_paths], Map.put(acc_engines, engine, true)} - {map, reduce} + + {{path, name, body}, Map.put(acc_engines, engine, true)} end) # Store the engines so we define compile-time deps