Skip to content

Commit 41570e8

Browse files
authored
Optimize Rendered iodata materialization (#4232)
Avoids intermediate list reversal by using body recursion for list construction, reducing memory allocations.
1 parent 51f3072 commit 41570e8

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

lib/phoenix_live_view/engine.ex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ defmodule Phoenix.LiveView.Rendered do
131131
end
132132

133133
defp recur_iodata(%Phoenix.LiveView.Rendered{static: static, dynamic: dynamic}) do
134-
recur_iodata(static, dynamic.(false), [])
134+
recur_iodata(static, dynamic.(false))
135135
end
136136

137137
defp recur_iodata(%_{} = struct) do
@@ -142,12 +142,12 @@ defmodule Phoenix.LiveView.Rendered do
142142
other
143143
end
144144

145-
defp recur_iodata([static_head | static_tail], [dynamic_head | dynamic_tail], acc) do
146-
recur_iodata(static_tail, dynamic_tail, [recur_iodata(dynamic_head), static_head | acc])
145+
defp recur_iodata([static_head | static_tail], [dynamic_head | dynamic_tail]) do
146+
[static_head, recur_iodata(dynamic_head) | recur_iodata(static_tail, dynamic_tail)]
147147
end
148148

149-
defp recur_iodata([static_head], [], acc) do
150-
Enum.reverse([static_head | acc])
149+
defp recur_iodata([static_head], []) do
150+
[static_head]
151151
end
152152
end
153153
end

0 commit comments

Comments
 (0)