Migrate iai-callgrind to the renamed successor gungraun (#4056)

* Add .nvim.lua to gitignore

* Migrate from iai-callgrind to the renamed successor gungraun

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
This commit is contained in:
gamma0987 2026-05-14 08:18:59 +00:00 committed by GitHub
parent 1c9c19a697
commit 456a7c868d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 74 additions and 76 deletions

View File

@ -22,27 +22,14 @@ jobs:
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install Valgrind
run: |
sudo apt update
sudo apt install -y valgrind
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2
with:
# Cache on Cargo.lock file
cache-on-failure: true
- name: Cache iai-callgrind binary
id: cache-iai
uses: actions/cache@v5
with:
path: ~/.cargo/bin/iai-callgrind-runner
key: ${{ runner.os }}-iai-callgrind-runner-0.16.1
- name: Install iai-callgrind
if: steps.cache-iai.outputs.cache-hit != 'true'
run: cargo install iai-callgrind-runner@0.16.1
- name: Install gungraun-runner and valgrind
uses: gungraun/setup-gungraun@v1
- name: Checkout master branch
run: |
@ -66,21 +53,21 @@ jobs:
id: cache-benchmark-baselines
uses: actions/cache@v5
with:
path: target/iai
key: ${{ runner.os }}-${{ runner.arch }}-${{ steps.cpu-info.outputs.cpu-hash }}-benchmark-baselines-master-${{ steps.master-sha.outputs.sha }}
path: target/gungraun
key: ${{ runner.os }}-${{ runner.arch }}-${{ steps.cpu-info.outputs.cpu-hash }}-gungraun-benchmark-baselines-master-${{ steps.master-sha.outputs.sha }}
restore-keys: |
${{ runner.os }}-${{ runner.arch }}-${{ steps.cpu-info.outputs.cpu-hash }}-benchmark-baselines-master-
${{ runner.os }}-${{ runner.arch }}-${{ steps.cpu-info.outputs.cpu-hash }}-gungraun-benchmark-baselines-master-
- name: Run baseline benchmarks
if: steps.cache-benchmark-baselines.outputs.cache-hit != 'true'
run: |
# Compile benchmarks
cargo bench --bench compile_demo_art_iai -- --save-baseline=master
cargo bench --bench compile_demo_art_gungraun -- --save-baseline=master
# Runtime benchmarks
cargo bench --bench update_executor_iai -- --save-baseline=master
cargo bench --bench run_once_iai -- --save-baseline=master
cargo bench --bench run_cached_iai -- --save-baseline=master
cargo bench --bench update_executor_gungraun -- --save-baseline=master
cargo bench --bench run_once_gungraun -- --save-baseline=master
cargo bench --bench run_cached_gungraun -- --save-baseline=master
- name: Checkout PR branch
run: git checkout ${{ github.event.pull_request.head.sha }}
@ -88,12 +75,12 @@ jobs:
- name: Run PR benchmarks
run: |
# Compile benchmarks
cargo bench --bench compile_demo_art_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/compile_output.json
cargo bench --bench compile_demo_art_gungraun -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/compile_output.json
# Runtime benchmarks
cargo bench --bench update_executor_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/update_output.json
cargo bench --bench run_once_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/run_once_output.json
cargo bench --bench run_cached_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/run_cached_output.json
cargo bench --bench update_executor_gungraun -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/update_output.json
cargo bench --bench run_once_gungraun -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/run_once_output.json
cargo bench --bench run_cached_gungraun -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/run_cached_output.json
- name: Make old comments collapsed by default
# Only run if we have write permissions (not a fork)

1
.gitignore vendored
View File

@ -12,3 +12,4 @@ flamegraph.svg
.idea/
.direnv
.DS_Store
.nvim.lua

86
Cargo.lock generated
View File

@ -1889,7 +1889,7 @@ dependencies = [
"graphene-core",
"graphene-hash",
"graphic-types",
"iai-callgrind",
"gungraun",
"js-sys",
"log",
"pretty_assertions",
@ -2243,6 +2243,43 @@ dependencies = [
"svg_fmt",
]
[[package]]
name = "gungraun"
version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e2e7d17b75a18300d495a5e79970067b92d74e4858c28326e125f2d55b1b566"
dependencies = [
"bincode",
"derive_more",
"gungraun-macros",
"gungraun-runner",
]
[[package]]
name = "gungraun-macros"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e35c7fb6133421db1cf752b7a2838d9277a26810ccaeeca7aa449f96ad7c2b01"
dependencies = [
"derive_more",
"proc-macro-error2",
"proc-macro2",
"quote",
"rustc_version",
"serde",
"serde_json",
"syn 2.0.106",
]
[[package]]
name = "gungraun-runner"
version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c19bb4c552085f983300b11694022d7584810dca3500c220962ab2353327fb45"
dependencies = [
"serde",
]
[[package]]
name = "h2"
version = "0.4.12"
@ -2442,42 +2479,6 @@ dependencies = [
"windows-registry",
]
[[package]]
name = "iai-callgrind"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b1e4910d3a9137442723dfb772c32dc10674c4181ca078d2fd227cd5dce9db0"
dependencies = [
"bincode",
"derive_more",
"iai-callgrind-macros",
"iai-callgrind-runner",
]
[[package]]
name = "iai-callgrind-macros"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d03775318d3f9f01b39ac6612b01464006dc397a654a89dd57df2fd34fb68c3"
dependencies = [
"derive_more",
"proc-macro-error2",
"proc-macro2",
"quote",
"serde",
"serde_json",
"syn 2.0.106",
]
[[package]]
name = "iai-callgrind-runner"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b74c9743c00c3bca4aaffc69c87cae56837796cd362438daf354a3f785788c68"
dependencies = [
"serde",
]
[[package]]
name = "iana-time-zone"
version = "0.1.63"
@ -2694,7 +2695,7 @@ dependencies = [
"graph-craft",
"graphene-core",
"graphene-std",
"iai-callgrind",
"gungraun",
"log",
"once_cell",
"preprocessor",
@ -4643,6 +4644,15 @@ dependencies = [
"thiserror 2.0.18",
]
[[package]]
name = "rustc_version"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
dependencies = [
"semver",
]
[[package]]
name = "rustix"
version = "1.0.8"

View File

@ -199,7 +199,7 @@ petgraph = { version = "0.7", default-features = false, features = ["graphmap"]
half = { version = "2.4", default-features = false, features = ["bytemuck"] }
tinyvec = { version = "1", features = ["std"] }
criterion = { version = "0.7", features = ["html_reports"] }
iai-callgrind = { version = "0.16" }
gungraun = { version = "0.18" }
ndarray = "0.16"
strum = { version = "0.27", features = ["derive"] }
dirs = "6.0"

View File

@ -42,7 +42,7 @@ ignore = [
"RUSTSEC-2024-0388", # Unmaintained `derivative`, used directly by graphite-editor and graphite-desktop
"RUSTSEC-2024-0436", # Unmaintained `paste`, pulled in by dependencies `metal` and `wgpu-hal`
"RUSTSEC-2025-0134", # Unmaintained `rustls-pemfile`, pulled in by build dependency `download-cef`
"RUSTSEC-2025-0141", # Unmaintained `bincode`, pulled in by dev dependency `iai-callgrind`
"RUSTSEC-2025-0141", # Unmaintained `bincode`, pulled in by dev dependency `gungraun`
]
# Threshold for security vulnerabilities, any vulnerability with a CVSS score
# lower than the range specified will be ignored. Note that ignored advisories

View File

@ -62,7 +62,7 @@ winit = { workspace = true }
graph-craft = { workspace = true, features = ["loading"] }
pretty_assertions = { workspace = true }
criterion = { workspace = true }
iai-callgrind = { workspace = true }
gungraun = { workspace = true }
# Benchmarks
[[bench]]
@ -70,5 +70,5 @@ name = "compile_demo_art_criterion"
harness = false
[[bench]]
name = "compile_demo_art_iai"
name = "compile_demo_art_gungraun"
harness = false

View File

@ -1,6 +1,6 @@
use graph_craft::document::NodeNetwork;
use graph_craft::util::*;
use iai_callgrind::{library_benchmark, library_benchmark_group, main};
use gungraun::prelude::*;
#[library_benchmark]
#[benches::with_setup(args = ["isometric-fountain", "painted-dreams", "procedural-string-lights", "parametric-dunescape", "red-dress", "valley-of-spires"], setup = load_from_name)]

View File

@ -30,7 +30,7 @@ serde = { workspace = true }
# Workspace dependencies
graph-craft = { workspace = true, features = ["loading"] }
criterion = { workspace = true }
iai-callgrind = { workspace = true }
gungraun = { workspace = true }
preprocessor = { workspace = true }
# Benchmarks
@ -47,13 +47,13 @@ name = "run_cached"
harness = false
[[bench]]
name = "update_executor_iai"
name = "update_executor_gungraun"
harness = false
[[bench]]
name = "run_once_iai"
name = "run_once_gungraun"
harness = false
[[bench]]
name = "run_cached_iai"
name = "run_cached_gungraun"
harness = false

View File

@ -2,7 +2,7 @@ mod benchmark_util;
use benchmark_util::setup_network;
use graphene_std::application_io::RenderConfig;
use iai_callgrind::{library_benchmark, library_benchmark_group, main};
use gungraun::prelude::*;
use interpreted_executor::dynamic_executor::DynamicExecutor;
use std::hint::black_box;

View File

@ -2,7 +2,7 @@ mod benchmark_util;
use benchmark_util::setup_network;
use graphene_std::application_io;
use iai_callgrind::{library_benchmark, library_benchmark_group, main};
use gungraun::prelude::*;
use interpreted_executor::dynamic_executor::DynamicExecutor;
use std::hint::black_box;

View File

@ -2,7 +2,7 @@ mod benchmark_util;
use benchmark_util::setup_network;
use graph_craft::proto::ProtoNetwork;
use iai_callgrind::{library_benchmark, library_benchmark_group, main};
use gungraun::prelude::*;
use interpreted_executor::dynamic_executor::DynamicExecutor;
use std::hint::black_box;