Skip to content

HF-150 (alternative): report instruction-count changes above 0.25% instead of 0.5% - #1864

Draft
marcin-kordas-hoc wants to merge 2 commits into
feat/hf-150-perf-reportfrom
feat/hf-150-alt-threshold-025
Draft

marcin-kordas-hoc wants to merge 2 commits into
feat/hf-150-perf-reportfrom
feat/hf-150-alt-threshold-025

Conversation

@marcin-kordas-hoc

@marcin-kordas-hoc marcin-kordas-hoc commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Context

The PR lowers the threshold of the instruction-count verdict from 0.5% to 0.25%. It is one of four alternatives to #1852, stacked on it, and changes only that value.

How did you test your changes?

  • Paired tests branch: feat/hf-150-alt-threshold-025 in hyperformula-tests (README only).
  • npm run test:jest -- unit/performance with the paired tests: 5 suites, 101 tests passed. The tests branch changes no lintable file.
  • CI on this PR, with engine code identical to the base (run 41012215331): all three performance jobs passed. The comment reads "no regression above +0.25% in 15 scenarios"; the largest executed change is -0.011%. Wall-clock: 14 ok, 1 inconclusive.

Compatibility with Excel and Google Sheets

Not applicable.

Public API changes

None.

Out of scope and follow-ups

  • Attributing the remaining heap effects (allocation locks) to garbage collection, which a lower threshold would need.

Types of changes

  • Breaking change (existing functionality no longer works as before) – agreed with the maintainers
  • New feature or improvement (a non-breaking change that adds functionality)
  • Bug fix (a non-breaking change that fixes an issue)
  • Additional language file, or a change to an existing language file (translations)
  • Change to the documentation

CI tooling only.

Related issues

  1. HF-150 (internal task)

Checklist

🤖 Generated with Claude Code

The workflow threshold of the executed-instruction verdict is halved, so
smaller increases are named as regressions in the performance report.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
hyperformula-docs 1b51b4f Commit Preview URL

Branch Preview URL
Nov 03 2026, 07:08 AM

@github-actions

github-actions Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Performance

✅ Executed instructions: no regression above +0.25% in 15 scenarios.
Wall-clock time (information only): ok: 15.

Scenario Executed instructions Verdict GC / compilation (information) Wall-clock Verdict (information)
Sheet A +0.000% ok -0.000% / 0.000% +0.23% ok
Sheet B -0.007% ok -0.000% / 0.000% +0.01% ok
Sheet T -0.006% ok +0.000% / 0.000% -0.33% ok
Column ranges -0.001% ok +0.000% / 0.000% +0.70% ok
Sorted lookup -0.004% ok +0.000% / 0.000% +0.47% ok
Sheet A: change value, add/remove row/column -0.002% ok -0.000% / 0.000% +4.01% ok
Sheet B: change value, add/remove row/column +0.000% ok -0.000% / 0.000% -6.37% ok
Column ranges - add column +0.000% ok +0.000% / 0.000% -3.96% ok
Column ranges - without batch -0.000% ok 0.000% / 0.000% -1.65% ok
Column ranges - batch +0.000% ok +0.000% / 0.000% -1.90% ok
Recalculation fan-out - one edit, 10k dependents -0.000% ok 0.000% / 0.000% -2.40% ok
Recalculation fan-out - 5 edits without batch -0.000% ok -0.000% / 0.000% -2.75% ok
Recalculation fan-out - 5 edits in batch +0.000% ok 0.000% / 0.000% -1.63% ok
Fan-out sheet - build, 30k rows -0.000% ok -0.000% / 0.000% - -
Recalculation fan-out - one edit, 30k dependents -0.000% ok 0.000% / 0.000% - -
Fan-out sheet - build, 100k rows - - - +0.17% ok
Recalculation fan-out - one edit, 100k dependents - - - -2.91% ok

- in a whole column: the scenario is measured by one suite only. The instruction count runs the 100k-row scenarios at 30k rows, under names that say so.

Instruction counts

Instructions counted by callgrind in the measured region of each scenario. The verdict compares the executed instructions: the count without garbage collection and JIT compilation, whose share moves with the state of the heap and the compiler, not only with the code under test. A change larger than ±0.25% of the base is reported. GC, Compilation and Total give the change of those parts and of the whole count, in percent of the base count.

Scenario Base Head Change GC Compilation Total Verdict
Sheet A 4,705,373,458 4,705,385,548 +0.000% -0.000% 0.000% +0.000% ok
Sheet B 1,647,048,997 1,646,928,279 -0.007% -0.000% 0.000% -0.004% ok
Sheet T 1,510,478,293 1,510,384,123 -0.006% +0.000% 0.000% -0.004% ok
Column ranges 5,679,680,641 5,679,620,591 -0.001% +0.000% 0.000% -0.001% ok
Sorted lookup 4,968,289,110 4,968,115,032 -0.004% +0.000% 0.000% -0.003% ok
Sheet A: change value, add/remove row/column 1,067,411,071 1,067,392,994 -0.002% -0.000% 0.000% -0.001% ok
Sheet B: change value, add/remove row/column 1,332,665,644 1,332,665,949 +0.000% -0.000% 0.000% +0.000% ok
Column ranges - add column 1,660,972,455 1,660,976,299 +0.000% +0.000% 0.000% +0.000% ok
Column ranges - without batch 4,552,900,274 4,552,894,521 -0.000% 0.000% 0.000% -0.000% ok
Column ranges - batch 1,247,170,503 1,247,172,568 +0.000% +0.000% 0.000% +0.000% ok
Recalculation fan-out - one edit, 10k dependents 219,233,976 219,233,576 -0.000% 0.000% 0.000% -0.000% ok
Recalculation fan-out - 5 edits without batch 690,424,164 690,423,683 -0.000% -0.000% 0.000% -0.000% ok
Recalculation fan-out - 5 edits in batch 222,429,289 222,429,647 +0.000% 0.000% 0.000% +0.000% ok
Fan-out sheet - build, 30k rows 8,305,905,853 8,305,905,037 -0.000% -0.000% 0.000% -0.000% ok
Recalculation fan-out - one edit, 30k dependents 481,466,254 481,466,152 -0.000% 0.000% 0.000% -0.000% ok
Wall-clock times
Scenario base median (ms) head median (ms) change threshold noise (CV base/head) verdict
Sheet A 452.8 453.8 +0.23% ±5.0% † 1.9% / 1.6% ok
Sheet B 188.5 188.6 +0.01% ±7.4% † 2.5% / 2.7% ok
Sheet T 156.9 156.3 -0.33% ±8.0% † 4.2% / 3.7% ok
Column ranges 441.0 444.1 +0.70% ±5.3% † 1.5% / 2.8% ok
Sorted lookup 11486.8 11540.3 +0.47% ±50.0% ‡ 1.1% / 1.8% ok
Fan-out sheet - build, 100k rows 5001.0 5009.5 +0.17% ±50.0% ‡ 0.4% / 1.9% ok
Sheet A: change value, add/remove row/column 133.4 138.8 +4.01% ±12.0% 9.6% / 14.7% ok
Sheet B: change value, add/remove row/column 194.8 182.4 -6.37% ±13.3% † 5.7% / 3.4% ok
Column ranges - add column 158.5 152.2 -3.96% ±6.4% † 2.2% / 2.2% ok
Column ranges - without batch 412.0 405.3 -1.65% ±6.3% † 2.3% / 5.3% ok
Column ranges - batch 133.7 131.2 -1.90% ±5.1% † 2.4% / 3.5% ok
Recalculation fan-out - one edit, 10k dependents 52.1 50.8 -2.40% ±6.4% † 2.7% / 4.7% ok
Recalculation fan-out - 5 edits without batch 115.1 112.0 -2.75% ±9.0% † 3.8% / 4.5% ok
Recalculation fan-out - 5 edits in batch 52.7 51.8 -1.63% ±6.8% † 4.5% / 2.8% ok
Recalculation fan-out - one edit, 100k dependents 330.4 320.8 -2.91% ±50.0% ‡ 10.4% / 7.8% ok

Threshold of an unmarked scenario = max(5%, 3 x the standard error of the difference of the two medians). † = the band of changes observed on identical code in earlier runs, instead of that rule. ‡ = a fixed threshold for a scenario that guards against a change of complexity class. This check is advisory: it reports regressions but does not fail the build.

head 1b51b4fec · base 8869f4703 · tests af17e1009 · run

Executed instructions decide the verdict: they do not depend on the load of the runner. Garbage collection and JIT compilation are counted too but shown apart, in percent of the base count, because they move with the state of the heap and the compiler, not only with the code under test. Wall-clock times vary with the load of the runner and are shown for information. This report does not block merging.

…-025

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Nov 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 97.28%. Comparing base (8869f47) to head (1b51b4f).

Additional details and impacted files

Impacted file tree graph

@@                   Coverage Diff                    @@
##           feat/hf-150-perf-report    #1864   +/-   ##
========================================================
  Coverage                    97.28%   97.28%           
========================================================
  Files                          207      207           
  Lines                        16218    16218           
  Branches                      3556     3556           
========================================================
  Hits                         15777    15777           
  Misses                         433      433           
  Partials                         8        8           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant