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!
I’ve recently read a couple of very nice reports
It could be helpful to you, I guess…
Here are the compile stats for our Elm sites that are live:
| Site |
LOC |
Modules |
Full |
Incremental |
| Vanbruun |
~100k |
717 |
10.6s |
2.0s |
| Scanfast |
~90k |
805 |
20.0s |
2.5s |
| Himla |
~80k |
739 |
8.1s |
1.6s |
| Powerwoman |
~75k |
737 |
13.6s |
1.7s |
| iZettle Shop |
~50k |
498 |
5.1s |
1.0s |
All measurements are made with time elm make Main.elm --output /dev/null on
Ubuntu 16.04 on a Desktop Computer with i7@4.5Ghz
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.
Happy to help if I can.
| Site |
LOC |
Modules |
Full |
Incremental |
| GlobalWebIndex |
63k |
218 |
5.7s |
1.5s |
All measurements are made with time elm make Main.elm on
Ubuntu 18.04 on a laptop with i7@2.6Ghz
Our app https://www.stax.io/ has 120K lines of Elm
Full: 13s
Incremental: 5s Depending on what you change, 10s when changing common modules.
Using time elm make src/Elm/App.elm
On a MacBookPro i7 2014
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).
My incremental build was with no changes, right after the full compilation from scratch.
I compiled the main big app. The line counts are with blank and comment lines 
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.