What are build times like as Elm 0.19.1 projects grow larger?
I feel like Elm 0.19.1 is relatively fast for a compiler, but I want to measure it. Some people have already contributed data. Here are some stats when using the --output=/dev/null
flag:
- 136,049 lines with worst incremental time of 283ms (here)
- 12,016 lines with worst incremental time of 282ms (here)
There’s no typo there! So I think this data is going to be pretty interesting, but I need your help to gather more data points!
How to Help
I created a measure-elm-make
executable that gathers a bunch of data about your project: build time from scratch, incremental build times, line counts, etc.
Step 1: Navigate to your largest Elm 0.19.1 project, and download measure-elm-make
with these instructions.
Step 2: Run it in your largest Elm 0.19.1 project. It takes one argument. The main entrypoint of your application. So calling it might look like this:
./measure-elm-make src/Main.elm
It will run the compiler a bunch of times to gather data (twice for each Elm file) and then provide instructions on how to share the data.
Run this on your normal development machine. The goal is to get numbers that are representative of day-to-day development, not to get the best numbers possible.
Stay focused on the terminal while measure-elm-make
runs. The goal is to get data on “what it is like in practice” so it is okay to have a bunch of applications open (whatever you would normally have open!) but actively using them while this script runs will make the data on incremental build times noisy and confusing.
Turn off any file watchers. Running this alongside tools like elm-live
that run elm-make
when a file is touched will mess this data up pretty badly.
It prints out a lot of repetitive stuff. That’s expected! I want it to be as realistic as possible, and doing the terminal animations with \r
may have some performance impact. The bigger your project, the longer it will be printing stuff out since it is running elm make
twice for each file in your project.
I am especially keen on getting data from projects with more than 50k lines of code, so please give it a shot if you are in that group!
Troubleshooting
Please ask about anything weird you run into in this thread or in the #core-coordination channel in Slack.