freiden

freiden

I’m building an API with Phoenix and I noticed that the build time of the application has increased a lot. It passed from less than 1mn after adding Ecto to almost 15mn.
There more libraries than in the beginning but is that normal?

Showing Posts 1 to 10

lpil

lpil

Creator of Gleam

Do you mean the time to compile the application, the time to compile the application and deps, or time to run the tests?

Also is 1mn 1 minute? :slight_smile:

hubertlepicki

hubertlepicki

in either case, this is abnormal I think. Must be something wrong. @freiden how did you install Erlang and Elixir. I think messing up with Erlang compilation flags is most likely to cause slow compile times.

freiden

freiden OP

I’m developing my application in a Docker Alpine container using erlang-18.3.2-r0.
I didn’t change the default flag of the installation.

OvermindDL1

OvermindDL1

Well that really should be updated, erlang-19 had a lot of features and bug fixes, however that is likely not the issue. :slight_smile:

Assuming your erlang is not build in such a way so that it will compile slow then the next #1 cause for slow compilation is a huge dependency graph. You can print out the dependency graph with mix xref graph --format dot to output a standard graphviz dot file if you want to generate an image, or you can use pretty or plain for different text output styles. The more things that depend on something then they all have to be recompiled. If you see one file that a lot of things depend on and you change that file a lot, then all of those dependents will also need recompiling (as well as their dependents and their dependents and so on), if that happens then break up the files more.

You can also try compiling while setting the long-compilation-threshold to something fairly short to see what files are taking a long time to compile, something like mix compile --long-compilation-threshold 1 for any file that takes above 1 second (and work your way up to see less files listed), and you can add --force to recompile your files even if it is not needed if you want to test all.

michalmuskala

michalmuskala

Here’s diff of the compile flags that I was using before & after to compile erlang Update · michalmuskala/dotfiles@586bee2 · GitHub

I’m not sure what exactly made the difference.

hubertlepicki

hubertlepicki

maybe… all of them? I think you need to use either “export” or “env” to actually set the build configuration for kerl.

In your original .kerlrc you had only local script variable set, and I think it did not work.

michalmuskala

michalmuskala

That might be very well true :sweat_smile:

freiden

freiden OP

I have generated the dependency graph and it have 332 references on my Phoenix project shared between views, controllers, models, custom mix tasks, libs, plugs and the router (around 80 files).
Is it so big?

josevalim

josevalim

Creator of Elixir

@freiden how long just mix deps.compile take?

Where Next? Top

Trending in Discussions Top

cblavier
Hey there, It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
axelson
Hi there! :wave: @frigidcode and I (but mostly him) have been running an Elixir Book club, we’re almost done with Designing Elixir Syste...
New
achempion
I’ve been using Emacs as my main code editor for more than a two years. It’s a custom build version although I’ve tried doom emacs and sp...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New
jtormey
Lately I’ve been thinking about how to organize components as a LiveView application grows. One of the pain points I’ve found (for myself...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
georgeguimaraes
Just published claude-code-elixir, a plugin marketplace for Claude Code with Elixir support. These are the plugins I’ve been using for my...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews