-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Elixir 1.18.4
Erlang 27.3.3
makeup_syntact 0.1.3
Macbook OS 15.6.1
M4 Pro (14 CPU Cores, 20 GPU Cores, 24gb memory)
Hi! I dug into the application start times of the sub applications in my phoenix app, and found that makeup_syntact is taking up the vast, vast majority of the application start time.
dbg output of application start times in a phoenix app (included to show start times relative to other deps)
Enum.sort(dep_start_times_in_ms, :desc) #=> [
{326.671, :makeup_syntect},
{67.183, :rum_dash},
{13.13, :tidewave},
{6.382, :req},
{5.59, :honeybadger},
{5.006, :hackney},
{4.319, :phoenix_live_reload},
{4.133, :live_admin},
{4.02, :yamerl},
{3.855, :plug},
{3.38, :phoenix},
{2.718, :runtime_tools},
{1.979, :phoenix_live_dashboard},
{1.934, :swoosh},
{1.715, :nimble_pool},
{1.537, :postgrex},
{1.493, :memoize},
{1.476, :telemetry},
{1.467, :telemetry_poller},
{1.231, :phoenix_pubsub}
]I thought this was due to the registering of too many lexers, but even when explicitly scoped to a single lexer via config :makeup_syntect, register_for_languages: ["html"], the problem persists.
I've traced the problem down to the following call in MakeupSyntect.Application.start/2:
:timer.tc(fn ->
MakeupSyntect.initialize_default_syntax_set()
end)
|> dbg()
#=> {319703, :ok}The above function is called prior to language registration. It strikes me that the configured/requested languages should be considered before initializing the entire default syntax set, as there's a good chance many of the syntaxes can safely be ignored.