Now that folks have had more time to upgrade to 0.19, I’d like to gather compile times from folks with large projects. Ideally 50k+ or 100k+ lines of code.
If you have such a project, please reply here or reach out to me directly!
If you know someone with such a project, please encourage them to get in contact.
I am curious to hear (1) compile-from-scratch times and (2) incremental compile times, but the point now is to identify people who can potentially provide data points!
Once I have a better idea of what is out there, maybe there can be some methodology that helps the data points cohere. I know with NoRedInk the full build process includes some non-Elm things which makes measuring the Elm part more difficult, so gathering data may depend on the particulars of the codebase to some extent. We’ll see when we have more leads!
My company has a code base of around 96k lines across ~350 modules (to my surprise!) It is unevenly split between 3 different apps. I imagine at least one is firmly over 50k lines though.
I got 3.7s for full build (after make clean) on a laptop with i7-8650U CPU @ 1.90GHz NixOS. On 15" macbook consistently over 5s though so seems the gen of processor or something can make quite some difference. Not sure how to even measure incremental builds - that would need some statistically appropriate sample of changes.
I know with NoRedInk the full build process includes some non-Elm things which make measuring the Elm part more difficult
Thant’s same for us but it’s single page app so it’s easy to bypass and still build all elm.
Also note that that app has 2 main modules and it seems both are measured to loc and compile times. So technically it’s probably a bit smaller. Like 10k app + 50k app. Probably the main entry still will be over 50k when empty lines and comments are counted (I’m using cloc).
Here are the times for the app we spoke about last year at Elm Europe. Currently at 194KLOC. The incremental time depends what you change, so I include a couple examples.
Build
Modules compiled
Time
Full
886
21s
Incremental (Main.elm)
1
3s
Incremental (common dependency)
66
10s
Times with time npx elm make src/Main.elm --output /dev/null on Ubuntu 18.04, Core i5, 1.6GHz ⨉ 8.