Skip to content

Instantly share code, notes, and snippets.

@huitseeker
Created February 20, 2026 05:25
Show Gist options
  • Select an option

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

Select an option

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

Transaction Benchmark Results

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 0904e2c610ab49bf6ee13cf349c05c8621f23cd2
Commit Message feat: account builder helper for schema commitment (#2419)
Author igamigo (ignacio.amigo@lambdaclass.com)
Date Wed Feb 18 15:51:16 2026 -0300
Branch next

Build Configuration

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

Cycle Counting Benchmarks

These benchmarks measure the number of VM cycles consumed by each transaction stage.

Consume Single P2ID Note

Stage Cycles
Prologue 3,104
Notes Processing 1,690
Note Execution 1,650 (1 note)
Transaction Script Processing 42
Epilogue 63,938
├─ Auth Procedure 62,641
└─ After TX Cycles Obtained 571
Total Cycles 70,424
Trace Length 131,072 (next power of 2)

Consume Two P2ID Notes

Stage Cycles
Prologue 4,096
Notes Processing 3,383
Note Execution 3,334 (2 notes: 1,684 + 1,650)
Transaction Script Processing 42
Epilogue 63,910
├─ Auth Procedure 62,627
└─ After TX Cycles Obtained 571
Total Cycles 74,765
Trace Length 131,072 (next power of 2)

Create Single P2ID Note

Stage Cycles
Prologue 1,646
Notes Processing 32
Note Execution 0 (no input notes)
Transaction Script Processing 1,502
Epilogue 64,764
├─ Auth Procedure 62,873
└─ After TX Cycles Obtained 571
Total Cycles 67,944
Trace Length 131,072 (next power of 2)

Timing Benchmarks

These benchmarks measure wall-clock time using Criterion.

Execute Transaction (without proving)

Transaction Type Mean Time Range
Consume single P2ID note 6.25 ms [6.24 ms - 6.26 ms]
Consume two P2ID notes 7.88 ms [7.86 ms - 7.90 ms]

Execute and Prove Transaction

Transaction Type Mean Time Range
Consume single P2ID note 460.35 ms [456.95 ms - 463.73 ms]
Consume two P2ID notes 467.18 ms [463.09 ms - 472.08 ms]

Observations

  1. Epilogue Dominance: The epilogue (specifically the auth procedure) accounts for approximately 90% of total cycles in all transaction types.

  2. Note Processing Scaling: Consuming two P2ID notes roughly doubles the notes processing and note execution cycles compared to a single note, as expected.

  3. Proving Time: Transaction proving takes approximately 74x longer than execution alone (460ms vs 6.2ms for single P2ID consumption).

  4. Trace Length Consistency: All transactions fit within a 131,072 cycle trace length (2^17), indicating consistent proof generation requirements.

  5. Minimal Script Overhead: Transaction script processing is negligible (42-1502 cycles) compared to the epilogue overhead.


Raw JSON Output

The full cycle counting results are available in bin/bench-transaction/bench-tx.json.

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