10 ms·
Just a data point on the deps compilation, on a small Phoenix app with mostly stock Phoenix deps: MIX_OS_DEPS_COMPILE_PARTITION_COUNT=1 mix deps.compile 32.
by asa400 1y ago
Just a data point on the deps compilation, on a small Phoenix app with mostly stock Phoenix deps:
MIX_OS_DEPS_COMPILE_PARTITION_COUNT=1 mix deps.compile 32.30s user 7.23s system 320% cpu 12.336 total
MIX_OS_DEPS_COMPILE_PARTITION_COUNT=5 mix deps.compile 0.37s user 0.49s system 12% cpu 6.970 total
MIX_OS_DEPS_COMPILE_PARTITION_COUNT=10 mix deps.compile 0.38s user 0.50s system 12% cpu 7.236 total
Machine is a Mac M1 Max, `rm -rf _build` in between each run.
- asa400 1y agoAnyone downvoting care to comment on why a benchmark of a feature in this release is downvote worthy?
- yuliyp 1y agoYou're measuring a cached compile in the subsequent runs. The deps.compile probably did some native compilation in the dep folder directly rather in _build.
- dns_snek 1y agoNo their results are correct. It roughly halved the compilation time on a newly generated Phoenix project. I'm assuming the savings would be more extensive on projects with multiple native dependencies that have lengthy compilation. rm -rf _build/ deps/ && mix deps.get && time MIX_OS_DEPS_COMPILE_PARTITION_COUNT=1 mix deps.compile ________________________________________________________ Executed in 37.75 secs fish external usr time 103.65 secs 32.00 micros 103.65 secs sys time 20.14 secs 999.00 micros 20.14 secs rm -rf _build/ deps/ && mix deps.get && time MIX_OS_DEPS_COMPILE_PARTITION_COUNT=5 mix deps.compile ________________________________________________________ Executed in 16.71 secs fish external usr time 2.39 secs 0.05 millis 2.39 secs sys time 0.87 secs 1.01 millis 0.87 secs rm -rf _build/ deps/ && mix deps.get && time MIX_OS_DEPS_COMPILE_PARTITION_COUNT=10 mix deps.compile ________________________________________________________ Executed in 17.19 secs fish external usr time 2.41 secs 1.09 millis 2.40 secs sys time 0.89 secs 0.04 millis 0.89 secs
- dns_snek 1y agoSimilar result on one of my real projects that's heavier on the Elixir dependencies but that only has 1 additional native dependency (brotli): mise use elixir@1.19-otp-26 erlang@26 rm -rf _build/ deps/ && mix deps.get && time MIX_OS_DEPS_COMPILE_PARTITION_COUNT=1 mix deps.compile ________________________________________________________ Executed in 97.93 secs fish external usr time 149.37 secs 1.45 millis 149.37 secs sys time 28.94 secs 1.11 millis 28.94 secs rm -rf _build/ deps/ && mix deps.get && time MIX_OS_DEPS_COMPILE_PARTITION_COUNT=5 mix deps.compile ________________________________________________________ Executed in 42.19 secs fish external usr time 2.48 secs 0.77 millis 2.48 secs sys time 0.91 secs 1.21 millis 0.91 secs
- yuliyp 1y agoOh, interesting. I guess `time` is only reporting the usr/sys time of the main process rather than the child workers when using PARTITION_COUNT higher than 1?