cargo: Updating iai-callgrind to gungraun#1692
Conversation
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Let's wait 2 days for the cooldown check, I don't think there's urgency on this. |
|
| Branch | teofr/update-iai-callgrind |
| Testbed | ci |
⚠️ WARNING: Truncated view!The full continuous benchmarking report exceeds the maximum length allowed on this platform.
🚨 3 Alerts
🐰 View full continuous benchmarking report in Bencher
|
| Branch | teofr/update-iai-callgrind |
| Testbed | ci |
⚠️ WARNING: Truncated view!The full continuous benchmarking report exceeds the maximum length allowed on this platform.
🐰 View full continuous benchmarking report in Bencher
⚠️ WARNING: No Threshold found!Without a Threshold, no Alerts will ever be generated.
|
| Branch | teofr/update-iai-callgrind |
| Testbed | ci |
⚠️ WARNING: Truncated view!The full continuous benchmarking report exceeds the maximum length allowed on this platform.
🐰 View full continuous benchmarking report in Bencher
⚠️ WARNING: No Threshold found!Without a Threshold, no Alerts will ever be generated.
|
| Branch | teofr/update-iai-callgrind |
| Testbed | ci |
⚠️ WARNING: Truncated view!The full continuous benchmarking report exceeds the maximum length allowed on this platform.
🐰 View full continuous benchmarking report in Bencher
⚠️ WARNING: No Threshold found!Without a Threshold, no Alerts will ever be generated.
428b470 to
24957a9
Compare
24957a9 to
b2d21ac
Compare
b2d21ac to
430fdf7
Compare
430fdf7 to
7bd5b5b
Compare
…rks names (#1750) This PR renames the way each `gungraun` benchmark is named: `gungraun` names benchmarks using the following template `{file}::{group}::{function} <bench_id>:(<arguments>)`. Before this change we were using: - each `group` for a different project (like `weighted_pool`); - each `function` for a different phase, but also repeating the project (since function names have to be unique); - the `<bench_id>` was always just test; - and `arguments` is usually ignored (since it's also truncated). This change makes them more uniform and less repetitive: - `{file}` is the bench binary: `slang`, `slang_v2`, or `comparison` (same as before); - `{group}` is `pipeline` for `slang` and `slang_v2`, or `parsers` for `comparison` (no actual information, but we could want to add other comparison points, or end to end usecases to slang(_v2)); - `{function}` is the pipeline stage (`parser`, `cursor`, `query`, `bindings_build`, …) for `slang` / `slang_v2`, or the parser implementation (`slang`, `slang_v2`, `solar`, `tree_sitter`) for `comparison`; - `<project>` is one of the entries in [`projects.json`](./projects.json), attached as a `#[bench::<project>("<project>")]` attribute on the function. This makes benchmark names go from: `slang::weighted_pool_full::weighted_pool_parser test:(...)` to: `slang::pipeline::parser weighted_pool:(...)` This also simplifies how some of the benchmarks express which projects they can run. ----- Note: This is a big change since it requires either loosing the history within bencher, or migrating old benchmarks names. But since we already have to do it because of #1692, it's a good time to improve on it. Also: This PR adds another step to `infra perf cargo --pr-benchmark` to compare the names of the current's code benchmarks and the ones present in bencher. If there are any differences it will report the new and orphan benchmarks. Given how `gungraun` names benchmarks, how we can recover them locally without actually executing them, and how bencher stores them, we may see some false negatives in the future. If this best effort approach becomes too cumbersome we could revert it.
…rks names (#1750) This PR renames the way each `gungraun` benchmark is named: `gungraun` names benchmarks using the following template `{file}::{group}::{function} <bench_id>:(<arguments>)`. Before this change we were using: - each `group` for a different project (like `weighted_pool`); - each `function` for a different phase, but also repeating the project (since function names have to be unique); - the `<bench_id>` was always just test; - and `arguments` is usually ignored (since it's also truncated). This change makes them more uniform and less repetitive: - `{file}` is the bench binary: `slang`, `slang_v2`, or `comparison` (same as before); - `{group}` is `pipeline` for `slang` and `slang_v2`, or `parsers` for `comparison` (no actual information, but we could want to add other comparison points, or end to end usecases to slang(_v2)); - `{function}` is the pipeline stage (`parser`, `cursor`, `query`, `bindings_build`, …) for `slang` / `slang_v2`, or the parser implementation (`slang`, `slang_v2`, `solar`, `tree_sitter`) for `comparison`; - `<project>` is one of the entries in [`projects.json`](./projects.json), attached as a `#[bench::<project>("<project>")]` attribute on the function. This makes benchmark names go from: `slang::weighted_pool_full::weighted_pool_parser test:(...)` to: `slang::pipeline::parser weighted_pool:(...)` This also simplifies how some of the benchmarks express which projects they can run. ----- Note: This is a big change since it requires either loosing the history within bencher, or migrating old benchmarks names. But since we already have to do it because of #1692, it's a good time to improve on it. Also: This PR adds another step to `infra perf cargo --pr-benchmark` to compare the names of the current's code benchmarks and the ones present in bencher. If there are any differences it will report the new and orphan benchmarks. Given how `gungraun` names benchmarks, how we can recover them locally without actually executing them, and how bencher stores them, we may see some false negatives in the future. If this best effort approach becomes too cumbersome we could revert it.
4d0f601 to
8d932d2
Compare
Bench list diff for
|
Bench list diff for
|
Bench list diff for
|
…rks names (#1750) This PR renames the way each `gungraun` benchmark is named: `gungraun` names benchmarks using the following template `{file}::{group}::{function} <bench_id>:(<arguments>)`. Before this change we were using: - each `group` for a different project (like `weighted_pool`); - each `function` for a different phase, but also repeating the project (since function names have to be unique); - the `<bench_id>` was always just test; - and `arguments` is usually ignored (since it's also truncated). This change makes them more uniform and less repetitive: - `{file}` is the bench binary: `slang`, `slang_v2`, or `comparison` (same as before); - `{group}` is `pipeline` for `slang` and `slang_v2`, or `parsers` for `comparison` (no actual information, but we could want to add other comparison points, or end to end usecases to slang(_v2)); - `{function}` is the pipeline stage (`parser`, `cursor`, `query`, `bindings_build`, …) for `slang` / `slang_v2`, or the parser implementation (`slang`, `slang_v2`, `solar`, `tree_sitter`) for `comparison`; - `<project>` is one of the entries in [`projects.json`](./projects.json), attached as a `#[bench::<project>("<project>")]` attribute on the function. This makes benchmark names go from: `slang::weighted_pool_full::weighted_pool_parser test:(...)` to: `slang::pipeline::parser weighted_pool:(...)` This also simplifies how some of the benchmarks express which projects they can run. ----- Note: This is a big change since it requires either loosing the history within bencher, or migrating old benchmarks names. But since we already have to do it because of #1692, it's a good time to improve on it. Also: This PR adds another step to `infra perf cargo --pr-benchmark` to compare the names of the current's code benchmarks and the ones present in bencher. If there are any differences it will report the new and orphan benchmarks. Given how `gungraun` names benchmarks, how we can recover them locally without actually executing them, and how bencher stores them, we may see some false negatives in the future. If this best effort approach becomes too cumbersome we could revert it.
1faae5f to
cb54152
Compare
|
Converting to draft until we understand what changed with the DHAT measurements |
cb54152 to
9718ba4
Compare
9718ba4 to
e0a8a2d
Compare
…rks names (#1750) This PR renames the way each `gungraun` benchmark is named: `gungraun` names benchmarks using the following template `{file}::{group}::{function} <bench_id>:(<arguments>)`. Before this change we were using: - each `group` for a different project (like `weighted_pool`); - each `function` for a different phase, but also repeating the project (since function names have to be unique); - the `<bench_id>` was always just test; - and `arguments` is usually ignored (since it's also truncated). This change makes them more uniform and less repetitive: - `{file}` is the bench binary: `slang`, `slang_v2`, or `comparison` (same as before); - `{group}` is `pipeline` for `slang` and `slang_v2`, or `parsers` for `comparison` (no actual information, but we could want to add other comparison points, or end to end usecases to slang(_v2)); - `{function}` is the pipeline stage (`parser`, `cursor`, `query`, `bindings_build`, …) for `slang` / `slang_v2`, or the parser implementation (`slang`, `slang_v2`, `solar`, `tree_sitter`) for `comparison`; - `<project>` is one of the entries in [`projects.json`](./projects.json), attached as a `#[bench::<project>("<project>")]` attribute on the function. This makes benchmark names go from: `slang::weighted_pool_full::weighted_pool_parser test:(...)` to: `slang::pipeline::parser weighted_pool:(...)` This also simplifies how some of the benchmarks express which projects they can run. ----- Note: This is a big change since it requires either loosing the history within bencher, or migrating old benchmarks names. But since we already have to do it because of #1692, it's a good time to improve on it. Also: This PR adds another step to `infra perf cargo --pr-benchmark` to compare the names of the current's code benchmarks and the ones present in bencher. If there are any differences it will report the new and orphan benchmarks. Given how `gungraun` names benchmarks, how we can recover them locally without actually executing them, and how bencher stores them, we may see some false negatives in the future. If this best effort approach becomes too cumbersome we could revert it.
997ad18 to
21e96bf
Compare
21e96bf to
32bdf49
Compare
Fixes #1690
Upgrade
iai-callgrindtogungraun(new name) and some breaking changes on the API.NOTE:
Upgrading from
iai-callgrind(v0.12.3) togungraun(v0.18.1) changes how the proc macro formats benchmark IDs. The part after the bench case name now wraps the setup expression in parentheses:Before:
comparison::cooldogs_group::slang_cooldogs test:tests :: setup :: setup(stringify! (cooldogs))After:
comparison::cooldogs_group::slang_cooldogs test:(tests :: setup :: setup(stringify! (cooldogs)))Solution
Before merging the PR, rename the existing benchmarks in Bencher Cloud using the bencher benchmark update CLI command. This rewrites the names in-place so that when gungraun starts reporting with the new ID format, Bencher matches them to the existing historical data — preserving continuity across all 3 projects (
slang-dashboard-cargo-slang,slang-dashboard-cargo-cmp,slang-dashboard-cargo-slang-v2).