How are 0.19 compile times for 50k+ LOC projects?

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!

6 Likes

I’ve recently read a couple of very nice reports

It could be helpful to you, I guess…

2 Likes

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

11 Likes

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.

1 Like
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

3 Likes

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

1 Like

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).

1 Like

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 :upside_down_face:

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.

3 Likes

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.