Skip to content

Performance regression in v2.13.0 #1519

@hauerhan

Description

@hauerhan

Is there an existing issue for this?

  • I have searched the existing issues

Description of the bug

Starting in 2.13.0 parsing of the git history/commit messages takes way longer compared to previous versions.

In a repository with a large number of commits I see processing times rising to multiple tens of seconds (locally) or even over a minute (CI).

Performance comparison run locally (Apple M4 Pro):

Large history: 0.1s => 23.4s

time ~/Downloads/git-cliff-2.12.0/git-cliff --bumped-version
 INFO  git_cliff > A new version of git-cliff is available: v2.12.0 -> v2.13.1
 WARN  git_cliff > "cliff.toml" is not found, using the default configuration
 WARN  git_cliff_core::changelog > 6453 commit(s) were skipped due to parse error(s) (run with `-vv` for details)
v1.7.46
~/Downloads/git-cliff-2.12.0/git-cliff --bumped-version  0.09s user 0.02s system 95% cpu 0.111 total

time ~/Downloads/git-cliff-2.13.0/git-cliff --bumped-version
INFO  git_cliff > A new version of git-cliff is available: v2.13.0 -> v2.13.1
WARN  git_cliff > "cliff.toml" is not found, using the default configuration
WARN  git_cliff_core::changelog > process_commits: 6453 commit(s) were skipped due to parse error(s) (run with `-vv` for details)
v1.7.46
~/Downloads/git-cliff-2.13.0/git-cliff --bumped-version  23.40s user 3.10s system 99% cpu 26.540 total

Smaller history: 0.01s => 0.15s

time ~/Downloads/git-cliff-2.12.0/git-cliff --bumped-version
 INFO  git_cliff > A new version of git-cliff is available: v2.12.0 -> v2.13.1
 WARN  git_cliff > "cliff.toml" is not found, using the default configuration
 WARN  git_cliff_core::changelog > 329 commit(s) were skipped due to parse error(s) (run with `-vv` for details)
 WARN  git_cliff                 > There is nothing to bump
v1.1.74
~/Downloads/git-cliff-2.12.0/git-cliff --bumped-version  0.01s user 0.02s system 67% cpu 0.049 total
time ~/Downloads/git-cliff-2.13.0/git-cliff --bumped-version
INFO  git_cliff > A new version of git-cliff is available: v2.13.0 -> v2.13.1
WARN  git_cliff > "cliff.toml" is not found, using the default configuration
WARN  git_cliff_core::changelog > process_commits: 329 commit(s) were skipped due to parse error(s) (run with `-vv` for details)
WARN  git_cliff                 > There is nothing to bump
v1.1.74
~/Downloads/git-cliff-2.13.0/git-cliff --bumped-version  0.15s user 0.11s system 99% cpu 0.266 total

Steps To Reproduce

  1. Run git-cliff v2.12.0 with default config and time execution
  2. Run git-cliff v2.13.0 or above with default config and time execution

Expected behavior

Execution time should not increase by a large factor

Screenshots / Logs

No response

Software information

  • Operating system: macOS Sequoia 15.7.5; RHEL8
  • Rust version: n/a (tested with released binaries and docker image)
  • Project version: 2.13.0 / 2.13.1

Additional context

No response

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinghelp wantedExtra attention is neededperformancePerformance related

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions