Skip to content

ci: check benchmark timings only without coverage - #816

Merged
haakon-e merged 1 commit into
mainfrom
he/ci-coverage-timing
Oct 19, 2026
Merged

haakon-e merged 1 commit into
mainfrom
he/ci-coverage-timing

Conversation

@haakon-e

Copy link
Copy Markdown
Member

Purpose

Make the timing checks in test/performance_tests.jl measure the code instead of the coverage instrumentation. They fail on every Julia 1.12 job since #811, although the code runs well within its budgets.

Content

The ci jobs ran the tests with coverage. On Julia 1.12, coverage slows the 1M bulk tendencies about 20-fold, so the timing budgets failed:

LinearizedAverage, Float64 Julia 1.10 Julia 1.12
without coverage 0.43 μs 0.41 μs
with coverage 3.1 μs 8.9 μs (budget 5.5 μs)
with coverage, 3 substeps 9.3 μs 26.4 μs (budget 18 μs)

Measured locally on main (Apple M-series); the coverage numbers on 1.12 match those in the CI logs of #811, #797 and #801.

  • The ci jobs now run without coverage, so their benchmarks time the code itself. Coverage comes from the CodeCov workflow alone, which already runs the test suite with coverage on every pull request and uploads it.
  • bench_press skips the timing check when coverage is on and keeps the allocation checks. Without this, a timing failure in the CodeCov job would fail the job and skip its coverage upload.

Locally on Julia 1.12, all 536 performance checks pass without coverage. With coverage, the 134 timing checks are reported as broken and the 402 others pass.

Codecov now receives one upload per push, from Julia 1.11 on Ubuntu, instead of seven, so lines that run only on another Julia version or operating system no longer count as covered.

This supersedes #760.

Breaking changes

None.

@codecov

codecov Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.93%. Comparing base (78764ba) to head (c939312).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #816      +/-   ##
==========================================
+ Coverage   93.62%   93.93%   +0.31%     
==========================================
  Files          59       55       -4     
  Lines        3201     3102      -99     
==========================================
- Hits         2997     2914      -83     
+ Misses        204      188      -16     
Components Coverage Δ
src 93.93% <ø> (-0.43%) ⬇️
ext ∅ <ø> (∅)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Coverage instrumentation slows the 1M bulk tendencies about 20-fold on
Julia 1.12 (LinearizedAverage: 0.41 us plain, 8.9 us with coverage), so
the timing budgets in test/performance_tests.jl measured the
instrumentation and failed on the 1.12 jobs.

The ci jobs now run without coverage, so their benchmarks time the code
itself. Coverage comes from the CodeCov workflow alone, which already
uploaded it on every pull request. Under coverage, bench_press skips the
timing check and keeps the allocation checks.
@haakon-e
haakon-e force-pushed the he/ci-coverage-timing branch from 06b2c39 to c939312 Compare October 19, 2026 01:18

@imreddyTeja imreddyTeja left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This pattern is nice. I didn't realize codecov slowed down execution that much! Is the slowdown only that extreme when using Julia 1.12?

@haakon-e

Copy link
Copy Markdown
Member Author

This pattern is nice. I didn't realize codecov slowed down execution that much! Is the slowdown only that extreme when using Julia 1.12?

Good question. I only tried 1.10 and 1.12 because that's what our CI runs. There is still a ~7x slowdown on 1.10, compared to ~21x slowdown on 1.12. Not sure how much run-to-run variance there is.

@haakon-e
haakon-e enabled auto-merge October 19, 2026 21:22
@haakon-e
haakon-e merged commit 294806a into main Oct 19, 2026
16 of 18 checks passed
@haakon-e
haakon-e deleted the he/ci-coverage-timing branch October 19, 2026 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants