nanoc: Big 0-change compilation performance regression

  1. bundle update
  2. time bundle exec nanoc compile
  3. repeat step 2. eleven times, discard first run, and average results.
4.12.10:  47,02s
4.12.9:  108,04s
4.12.8:    5,38s
4.12.7:    5,40s

My site consists of roughly 3500 items.

rbspy nanoc 4.12.10 flamegraph (below) and raw:

2022-10-19-tcFeP7YFAO flamegraph

rbspy nanoc 4.12.8 flamegraph (below) and raw:

2022-10-19-WlwSxgxNGk flamegraph

ruby-3.1.1-162.fc36

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 33 (33 by maintainers)

Most upvoted comments

6527edab8c913af01ebf3ec379beeb381e0fc66e improved things significantly! 11,5 seconds!

@da2x Can I get you to test out the denis/optimize-single-item-dependencies branch (PR #1613) as well?

8,9s

To see the changes, you might have to delete tmp/nanoc and run nanoc twice or so, make a few changes, and run nanoc again.

I’ve already been deleting tmp/nanoc when switching versions. 😉

This change had another, possibly unexpected, side-effect. My single-entry-changed compilation time has always been around <del>30s</del> 22s. A bit annoying, but whatever — it’s what I’ve been used to. This change — or maybe the combination of changes — brought it down to 13 seconds.