Skip to content

Instantly share code, notes, and snippets.

@huitseeker
Created February 20, 2026 06:08
Show Gist options
  • Select an option

  • Save huitseeker/f02bd4e2cf0498fdc3d7ff41d2626bfd to your computer and use it in GitHub Desktop.

Select an option

Save huitseeker/f02bd4e2cf0498fdc3d7ff41d2626bfd to your computer and use it in GitHub Desktop.

Transaction Benchmark Results - Branch: huitseeker/huitseeker/update-miden-deps-p3

Generated: 2026-02-20


Machine Characteristics

Property Value
Model MacBook Pro (Mac16,6)
Chip Apple M4 Max
CPU Cores 16 (12 performance + 4 efficiency)
Memory 128 GB
Architecture ARM64 (aarch64-apple-darwin)
OS Darwin 24.6.0
Firmware 11881.140.96

Commit Characteristics

Property Value
Commit Hash f277721d3ae89b121d30c535c592e124425fa2ca
Commit Message Adjust output_note add_asset input order
Author François Garillot (francois@garillot.net)
Date Sun Feb 15 06:08:09 2026 -0500
Branch huitseeker/huitseeker/update-miden-deps-p3

Build Configuration

Property Value
Rust Version rustc 1.93.1 (stable)
Cargo Version cargo 1.93.0
Features concurrent
Build Profile release (for benchmarks)

Timing Benchmarks

These benchmarks measure wall-clock time using Criterion.

Execute Transaction (without proving)

Transaction Type Mean Time Range Change from next
Consume single P2ID note 2.58 ms [2.57 ms - 2.60 ms] -58.7% (improved)
Consume two P2ID notes 2.96 ms [2.95 ms - 2.97 ms] -62.4% (improved)

Execute and Prove Transaction

Transaction Type Mean Time Range Notes
Execute and prove single P2ID note 593 ms [583 ms - 607 ms] Proof size: ~218KB
Execute and prove two P2ID notes 1.16 s [1.15 s - 1.17 s] Proof size: ~218KB

Note: Proving is now confirmed to be running. Each proof is approximately 218KB in size and uses Blake3_256 hash function.


Cycle Counting Benchmarks

Status: Unable to complete

The cycle counting benchmarks (via cargo run --bin bench-transaction) failed due to stricter asset validation in the updated miden-vm dependencies. The error:

asset data extracted from the stack by event handler `on_account_vault_before_add_or_remove_asset` is not well formed
faucet account ID in asset has a non-faucet prefix: 0x...

This indicates that FungibleAsset::mock() creates assets with invalid faucet IDs that no longer pass validation in the newer VM version.


Summary

Performance Improvements

This branch shows significant performance improvements in transaction execution:

  • ~59% faster for single P2ID note consumption (6.25ms → 2.58ms)
  • ~62% faster for double P2ID note consumption (7.88ms → 2.96ms)

Proving Performance

  • Single P2ID proving: ~593ms (vs ~460ms on next)
  • Two P2ID proving: ~1.16s (vs ~467ms on next)

The proving time has increased compared to next. This may be due to:

  1. Different proof options or hash functions in the new VM version
  2. Changes in the STARK prover implementation
  3. Additional validation or trace generation steps

Known Issues

  1. Asset Validation: The stricter asset validation in the new VM breaks FungibleAsset::mock() usage. Tests in the miden-testing crate also fail with similar errors.

Comparison with next Branch

Metric next Branch This Branch Delta
Execute single P2ID 6.25 ms 2.58 ms -58.7%
Execute two P2ID 7.88 ms 2.96 ms -62.4%
Execute+Prove single P2ID 460.35 ms 593 ms +28.8%
Execute+Prove two P2ID 467.18 ms 1.16 s +148%
miden-vm version 0.20.3 0.22.0 Updated

Notes

  • The timing benchmarks were run with cargo bench --bin bench-transaction --bench time_counting_benchmarks --features concurrent
  • Fixed the proving benchmark by switching from prove() to prove_async() to avoid Tokio runtime nesting issues
  • Also fixed a bug where the proving async function wasn't being awaited properly in the benchmark
  • The cycle counting benchmarks could not be completed due to asset validation failures
  • This branch updates miden-vm dependencies to a newer version with significant execution performance improvements but slower proving times
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment