diff --git a/.github/workflows/comment-profiling-changes.yaml b/.github/workflows/comment-profiling-changes.yaml index e07fb9d2f8..9263bde252 100644 --- a/.github/workflows/comment-profiling-changes.yaml +++ b/.github/workflows/comment-profiling-changes.yaml @@ -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) diff --git a/.gitignore b/.gitignore index 06bcee0483..bb602ac1f9 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ flamegraph.svg .idea/ .direnv .DS_Store +.nvim.lua diff --git a/Cargo.lock b/Cargo.lock index 324b645471..898e95e9ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1917,7 +1917,7 @@ dependencies = [ "graphene-application-io", "graphene-core", "graphic-types", - "iai-callgrind", + "gungraun", "js-sys", "log", "pretty_assertions", @@ -2248,6 +2248,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" @@ -2445,42 +2482,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" @@ -2717,7 +2718,7 @@ dependencies = [ "graph-craft", "graphene-core", "graphene-std", - "iai-callgrind", + "gungraun", "log", "once_cell", "preprocessor", @@ -4690,6 +4691,15 @@ dependencies = [ "spirv", ] +[[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" diff --git a/Cargo.toml b/Cargo.toml index 802a5acce1..cdfacd7d21 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -196,7 +196,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" diff --git a/deny.toml b/deny.toml index 462d08a99b..3b3efa69a9 100644 --- a/deny.toml +++ b/deny.toml @@ -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 diff --git a/node-graph/graph-craft/Cargo.toml b/node-graph/graph-craft/Cargo.toml index db2fdd5756..a142c8ff2e 100644 --- a/node-graph/graph-craft/Cargo.toml +++ b/node-graph/graph-craft/Cargo.toml @@ -61,7 +61,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]] @@ -69,5 +69,5 @@ name = "compile_demo_art_criterion" harness = false [[bench]] -name = "compile_demo_art_iai" +name = "compile_demo_art_gungraun" harness = false diff --git a/node-graph/graph-craft/benches/compile_demo_art_iai.rs b/node-graph/graph-craft/benches/compile_demo_art_gungraun.rs similarity index 87% rename from node-graph/graph-craft/benches/compile_demo_art_iai.rs rename to node-graph/graph-craft/benches/compile_demo_art_gungraun.rs index 789a6640ff..176df58ba8 100644 --- a/node-graph/graph-craft/benches/compile_demo_art_iai.rs +++ b/node-graph/graph-craft/benches/compile_demo_art_gungraun.rs @@ -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)] diff --git a/node-graph/interpreted-executor/Cargo.toml b/node-graph/interpreted-executor/Cargo.toml index 38178e33c8..271408240c 100644 --- a/node-graph/interpreted-executor/Cargo.toml +++ b/node-graph/interpreted-executor/Cargo.toml @@ -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 diff --git a/node-graph/interpreted-executor/benches/run_cached_iai.rs b/node-graph/interpreted-executor/benches/run_cached_gungraun.rs similarity index 93% rename from node-graph/interpreted-executor/benches/run_cached_iai.rs rename to node-graph/interpreted-executor/benches/run_cached_gungraun.rs index a98ac81ce5..4e004c726f 100644 --- a/node-graph/interpreted-executor/benches/run_cached_iai.rs +++ b/node-graph/interpreted-executor/benches/run_cached_gungraun.rs @@ -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; diff --git a/node-graph/interpreted-executor/benches/run_once_iai.rs b/node-graph/interpreted-executor/benches/run_once_gungraun.rs similarity index 92% rename from node-graph/interpreted-executor/benches/run_once_iai.rs rename to node-graph/interpreted-executor/benches/run_once_gungraun.rs index 5fed663ce8..399a852d6f 100644 --- a/node-graph/interpreted-executor/benches/run_once_iai.rs +++ b/node-graph/interpreted-executor/benches/run_once_gungraun.rs @@ -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; diff --git a/node-graph/interpreted-executor/benches/update_executor_iai.rs b/node-graph/interpreted-executor/benches/update_executor_gungraun.rs similarity index 93% rename from node-graph/interpreted-executor/benches/update_executor_iai.rs rename to node-graph/interpreted-executor/benches/update_executor_gungraun.rs index 08dff9f6d2..469008682b 100644 --- a/node-graph/interpreted-executor/benches/update_executor_iai.rs +++ b/node-graph/interpreted-executor/benches/update_executor_gungraun.rs @@ -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;