Skip to content

test(evm): add comprehensive Solidity test contracts and performance benchmarks#375

Draft
starwarfan wants to merge 2 commits intoDTVMStack:mainfrom
starwarfan:fix-benchmark-warmup
Draft

test(evm): add comprehensive Solidity test contracts and performance benchmarks#375
starwarfan wants to merge 2 commits intoDTVMStack:mainfrom
starwarfan:fix-benchmark-warmup

Conversation

@starwarfan
Copy link
Contributor

@starwarfan starwarfan commented Mar 2, 2026

This PR introduces comprehensive EVM contract test suites and dedicated performance benchmarks to accurately measure execution efficiency.

Key Changes

  1. Extensive Solidity Test Contracts: Added a wide variety of real-world contract scenarios under tests/evm_solidity/, including:

    • DAO: MultiSigWallet and SimpleGovernor.
    • DeFi: LendingPool and SimpleDEX.
    • ERC20: FeeOnTransferERC20 and PausableBurnableERC20.
    • Layer 2: MerkleProofVerifier and RollupState.
    • NFT: ERC721Enumerable and OnChainMetadataNFT.
      These suites include wrapper contracts and test_cases.json definitions to automatically build dynamic calldata arrays for specific setup operations.
  2. Benchmark Accuracy Improvements:

    • Warmup loop: Added an untimed warmup call (benchmark::DoNotOptimize) prior to the benchmark's main inner loop. This guarantees that evmone or DTVM has populated caches and triggered any deferred JIT compilations, making the benchmark reflective of strictly pure-execution cost.
    • Dynamic Calldata Generation: Incorporated test framework changes (buildCalldata, encodeConstructorParams) directly into the custom benchmark runner (benchmarks/evm_contract_benchmark.cpp). This allows complex test setups (such as transferring tokens before swapping) to correctly compute and format the raw calldata.
  3. CI/Build adjustments:

    • Removed obsolete ZEN_ENABLE_EVM_GAS_REGISTER workflow checks.
    • Minor cleanups in interpreter and EVM compiler configurations.

These changes ensure that our testing and benchmarking framework reflects real-world EVM usage and accurately assesses runtime efficiency instead of first-execution JIT overhead.

1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

  • N
  • Y

2. What is the scope of this PR (e.g. component or file name):

benchmarks/evm_contract_benchmark.cpp, tests/evm_solidity/

3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

  • Affects user behaviors
  • Contains CI/CD configuration changes
  • Contains documentation changes
  • Contains experimental features
  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Other: adds test contracts and fixes performance benchmark accuracy

4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

  • N
  • Y

5. Provide a description of the tests:

Verified locally on x86_64:

  • All benchmarks in evm-contract-benchmark successfully run and complete.
  • Multipass execution times reflect ~300-1500us values (pure execution) instead of previously multi-second compilation+execution outliers.
  • Contract arguments correctly resolve with forward-resolved addresses (ERC20BenchWrapper, MultiSigWallet, etc).

Made with Cursor

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes two issues in the EVM contract benchmarks: (1) it adds an untimed warmup call before the benchmark loop to avoid measuring JIT compilation overhead, and (2) it introduces dynamic calldata construction (using buildCalldata/encodeConstructorParams) so that test cases with address arguments resolve correctly at runtime instead of requiring pre-baked hex calldata strings.

Changes:

  • Introduces a new EVMCBenchmarkHost class that wraps an evmc::VM to support recursive CALL dispatch during benchmarks.
  • Replaces fixed calldata hex with a dynamic buildCalldata helper that constructs ABI-encoded calldata with forward-resolved contract addresses.
  • Adds a warmup call before the timed benchmark loop to trigger JIT compilation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@github-actions
Copy link

github-actions bot commented Mar 2, 2026

⚡ Performance Regression Check Results

✅ Performance Check Passed (interpreter)

Performance Benchmark Results (threshold: 20%)

Benchmark Baseline (us) Current (us) Change Status
total/main/blake2b_huff/8415nulls 2.03 2.30 +13.2% PASS
total/main/blake2b_huff/empty 0.09 0.19 +122.4% PASS
total/main/blake2b_shifts/8415nulls 17.45 17.01 -2.5% PASS
total/main/sha1_divs/5311 7.47 7.52 +0.6% PASS
total/main/sha1_divs/empty 0.10 0.09 -8.5% PASS
total/main/sha1_shifts/5311 5.29 5.30 +0.1% PASS
total/main/sha1_shifts/empty 0.07 0.07 -1.1% PASS
total/main/snailtracer/benchmark 69.08 64.81 -6.2% PASS
total/main/structarray_alloc/nfts_rank 1.27 1.22 -3.9% PASS
total/main/swap_math/insufficient_liquidity 0.01 0.01 +6.2% PASS
total/main/swap_math/received 0.01 0.01 +1.9% PASS
total/main/swap_math/spent 0.01 0.01 +3.1% PASS
total/main/weierstrudel/1 0.32 0.31 -2.3% PASS
total/main/weierstrudel/15 2.89 3.14 +8.7% PASS
total/micro/JUMPDEST_n0/empty 1.20 1.53 +27.0% PASS
total/micro/jump_around/empty 0.14 0.11 -19.6% PASS
total/micro/loop_with_many_jumpdests/empty 24.95 25.38 +1.7% PASS
total/micro/memory_grow_mload/by1 0.15 0.16 +8.4% PASS
total/micro/memory_grow_mload/by16 0.19 0.18 -5.9% PASS
total/micro/memory_grow_mload/by32 0.22 0.20 -7.8% PASS
total/micro/memory_grow_mload/nogrow 0.15 0.16 +9.3% PASS
total/micro/memory_grow_mstore/by1 0.19 0.19 +3.0% PASS
total/micro/memory_grow_mstore/by16 0.21 0.21 -0.4% PASS
total/micro/memory_grow_mstore/by32 0.23 0.22 -2.9% PASS
total/micro/memory_grow_mstore/nogrow 0.19 0.19 +0.0% PASS
total/micro/signextend/one 0.30 0.31 +3.1% PASS
total/micro/signextend/zero 0.30 0.31 +3.9% PASS
total/synth/ADD/b0 2.66 2.72 +2.2% PASS
total/synth/ADD/b1 2.54 2.57 +1.2% PASS
total/synth/ADDRESS/a0 4.43 5.16 +16.3% PASS
total/synth/ADDRESS/a1 4.77 5.66 +18.6% PASS
total/synth/AND/b0 2.46 2.70 +9.5% PASS
total/synth/AND/b1 2.50 2.72 +8.6% PASS
total/synth/BYTE/b0 6.11 6.99 +14.2% PASS
total/synth/BYTE/b1 5.01 5.45 +8.9% PASS
total/synth/CALLDATASIZE/a0 2.65 2.90 +9.5% PASS
total/synth/CALLDATASIZE/a1 3.33 3.38 +1.6% PASS
total/synth/CALLER/a0 4.42 5.16 +16.7% PASS
total/synth/CALLER/a1 4.74 5.56 +17.2% PASS
total/synth/CALLVALUE/a0 2.62 2.60 -0.9% PASS
total/synth/CALLVALUE/a1 2.65 2.96 +11.8% PASS
total/synth/CODESIZE/a0 2.94 3.15 +7.0% PASS
total/synth/CODESIZE/a1 3.51 3.61 +3.0% PASS
total/synth/DUP1/d0 1.48 1.59 +7.2% PASS
total/synth/DUP1/d1 1.57 1.77 +12.8% PASS
total/synth/DUP10/d0 1.49 1.53 +3.0% PASS
total/synth/DUP10/d1 1.58 1.42 -9.9% PASS
total/synth/DUP11/d0 1.49 1.50 +0.8% PASS
total/synth/DUP11/d1 1.57 1.42 -9.8% PASS
total/synth/DUP12/d0 1.49 1.51 +1.2% PASS
total/synth/DUP12/d1 1.57 1.64 +4.5% PASS
total/synth/DUP13/d0 1.49 1.60 +7.3% PASS
total/synth/DUP13/d1 1.57 1.68 +6.8% PASS
total/synth/DUP14/d0 1.49 1.61 +7.9% PASS
total/synth/DUP14/d1 1.57 1.61 +2.0% PASS
total/synth/DUP15/d0 1.49 1.77 +18.8% PASS
total/synth/DUP15/d1 1.57 1.69 +7.3% PASS
total/synth/DUP16/d0 1.50 1.50 +0.3% PASS
total/synth/DUP16/d1 1.57 1.41 -10.2% PASS
total/synth/DUP2/d0 1.48 1.59 +7.4% PASS
total/synth/DUP2/d1 1.57 1.70 +7.9% PASS
total/synth/DUP3/d0 1.49 1.59 +7.0% PASS
total/synth/DUP3/d1 1.57 1.66 +5.8% PASS
total/synth/DUP4/d0 1.48 1.50 +1.3% PASS
total/synth/DUP4/d1 1.57 1.43 -9.4% PASS
total/synth/DUP5/d0 1.48 1.50 +1.1% PASS
total/synth/DUP5/d1 1.57 1.41 -10.2% PASS
total/synth/DUP6/d0 1.49 1.50 +1.2% PASS
total/synth/DUP6/d1 1.57 1.42 -9.8% PASS
total/synth/DUP7/d0 1.49 1.68 +13.1% PASS
total/synth/DUP7/d1 1.57 1.69 +7.7% PASS
total/synth/DUP8/d0 1.49 1.55 +4.3% PASS
total/synth/DUP8/d1 1.57 1.68 +7.0% PASS
total/synth/DUP9/d0 1.49 1.51 +1.6% PASS
total/synth/DUP9/d1 1.57 1.45 -7.7% PASS
total/synth/EQ/b0 4.82 5.66 +17.5% PASS
total/synth/EQ/b1 4.98 5.64 +13.2% PASS
total/synth/GAS/a0 2.78 3.07 +10.4% PASS
total/synth/GAS/a1 3.30 3.46 +5.1% PASS
total/synth/GT/b0 4.57 5.35 +17.1% PASS
total/synth/GT/b1 4.84 5.36 +10.8% PASS
total/synth/ISZERO/u0 7.65 9.40 +22.9% REGRESSED
total/synth/JUMPDEST/n0 1.20 1.35 +12.2% PASS
total/synth/LT/b0 4.57 5.35 +17.1% PASS
total/synth/LT/b1 4.84 5.56 +14.9% PASS
total/synth/MSIZE/a0 3.92 4.53 +15.4% PASS
total/synth/MSIZE/a1 4.27 5.18 +21.4% PASS
total/synth/MUL/b0 4.23 4.92 +16.2% PASS
total/synth/MUL/b1 4.43 4.79 +8.3% PASS
total/synth/NOT/u0 3.68 2.85 -22.3% PASS
total/synth/OR/b0 2.48 2.69 +8.5% PASS
total/synth/OR/b1 2.48 2.73 +9.8% PASS
total/synth/PC/a0 2.58 2.87 +11.3% PASS
total/synth/PC/a1 3.37 3.55 +5.3% PASS
total/synth/PUSH1/p0 1.76 1.78 +1.0% PASS
total/synth/PUSH1/p1 1.49 1.91 +28.0% PASS
total/synth/PUSH10/p0 1.78 1.80 +0.7% PASS
total/synth/PUSH10/p1 1.52 1.93 +27.0% PASS
total/synth/PUSH11/p0 1.79 1.80 +0.7% PASS
total/synth/PUSH11/p1 1.52 1.94 +27.3% PASS
total/synth/PUSH12/p0 1.80 1.81 +0.7% PASS
total/synth/PUSH12/p1 1.52 1.95 +28.2% PASS
total/synth/PUSH13/p0 1.80 1.81 +0.5% PASS
total/synth/PUSH13/p1 1.52 1.95 +27.7% PASS
total/synth/PUSH14/p0 1.82 1.85 +1.7% PASS
total/synth/PUSH14/p1 1.52 2.01 +31.8% PASS
total/synth/PUSH15/p0 1.81 1.82 +0.1% PASS
total/synth/PUSH15/p1 1.55 1.92 +23.8% PASS
total/synth/PUSH16/p0 1.80 1.84 +2.2% PASS
total/synth/PUSH16/p1 1.53 1.97 +28.7% PASS
total/synth/PUSH17/p0 1.81 1.82 +0.6% PASS
total/synth/PUSH17/p1 1.53 1.94 +26.7% PASS
total/synth/PUSH18/p0 1.81 1.82 +0.6% PASS
total/synth/PUSH18/p1 1.54 1.97 +28.3% PASS
total/synth/PUSH19/p0 1.81 1.83 +1.1% PASS
total/synth/PUSH19/p1 1.54 1.96 +27.3% PASS
total/synth/PUSH2/p0 1.76 1.78 +0.6% PASS
total/synth/PUSH2/p1 1.49 1.90 +27.4% PASS
total/synth/PUSH20/p0 1.81 1.83 +0.8% PASS
total/synth/PUSH20/p1 1.54 2.01 +30.2% PASS
total/synth/PUSH21/p0 1.82 1.83 +0.7% PASS
total/synth/PUSH21/p1 1.54 1.96 +26.6% PASS
total/synth/PUSH22/p0 1.82 1.83 +0.5% PASS
total/synth/PUSH22/p1 1.55 1.96 +26.3% PASS
total/synth/PUSH23/p0 1.82 1.84 +0.8% PASS
total/synth/PUSH23/p1 1.55 1.97 +26.9% PASS
total/synth/PUSH24/p0 1.82 1.84 +0.9% PASS
total/synth/PUSH24/p1 1.55 1.99 +27.9% PASS
total/synth/PUSH25/p0 1.83 1.85 +0.8% PASS
total/synth/PUSH25/p1 1.59 1.92 +20.1% PASS
total/synth/PUSH26/p0 1.84 1.85 +0.2% PASS
total/synth/PUSH26/p1 1.56 1.99 +27.9% PASS
total/synth/PUSH27/p0 1.83 1.85 +0.9% PASS
total/synth/PUSH27/p1 1.56 1.99 +27.3% PASS
total/synth/PUSH28/p0 1.83 1.86 +1.2% PASS
total/synth/PUSH28/p1 1.56 2.00 +28.2% PASS
total/synth/PUSH29/p0 1.84 1.85 +0.8% PASS
total/synth/PUSH29/p1 1.56 1.99 +27.4% PASS
total/synth/PUSH3/p0 1.77 1.78 +0.4% PASS
total/synth/PUSH3/p1 1.50 1.91 +27.5% PASS
total/synth/PUSH30/p0 1.86 1.89 +1.7% PASS
total/synth/PUSH30/p1 1.57 2.02 +28.5% PASS
total/synth/PUSH31/p0 1.84 1.86 +1.0% PASS
total/synth/PUSH31/p1 1.66 1.99 +20.1% PASS
total/synth/PUSH32/p0 1.86 1.88 +1.0% PASS
total/synth/PUSH32/p1 1.57 2.03 +29.2% PASS
total/synth/PUSH4/p0 1.78 1.78 +0.3% PASS
total/synth/PUSH4/p1 1.50 1.91 +27.1% PASS
total/synth/PUSH5/p0 1.78 2.06 +15.8% PASS
total/synth/PUSH5/p1 1.50 1.91 +27.3% PASS
total/synth/PUSH6/p0 1.78 1.78 +0.4% PASS
total/synth/PUSH6/p1 1.50 1.83 +21.6% PASS
total/synth/PUSH7/p0 1.78 1.79 +0.6% PASS
total/synth/PUSH7/p1 1.51 1.94 +28.0% PASS
total/synth/PUSH8/p0 1.78 1.79 +0.7% PASS
total/synth/PUSH8/p1 1.51 1.88 +24.5% PASS
total/synth/PUSH9/p0 1.79 1.80 +0.5% PASS
total/synth/PUSH9/p1 1.51 1.93 +27.5% PASS
total/synth/RETURNDATASIZE/a0 2.81 3.09 +9.8% PASS
total/synth/RETURNDATASIZE/a1 3.53 3.89 +10.2% PASS
total/synth/SAR/b0 3.54 3.99 +12.6% PASS
total/synth/SAR/b1 4.11 4.48 +9.0% PASS
total/synth/SGT/b0 4.84 5.64 +16.5% PASS
total/synth/SGT/b1 4.83 5.38 +11.4% PASS
total/synth/SHL/b0 4.00 4.19 +4.7% PASS
total/synth/SHL/b1 2.76 2.73 -1.1% PASS
total/synth/SHR/b0 3.09 3.27 +5.9% PASS
total/synth/SHR/b1 2.85 2.93 +3.1% PASS
total/synth/SIGNEXTEND/b0 2.48 2.79 +12.5% PASS
total/synth/SIGNEXTEND/b1 2.84 2.78 -2.3% PASS
total/synth/SLT/b0 4.84 5.64 +16.7% PASS
total/synth/SLT/b1 4.86 5.44 +11.8% PASS
total/synth/SUB/b0 2.73 2.60 -4.9% PASS
total/synth/SUB/b1 2.52 2.56 +1.7% PASS
total/synth/SWAP1/s0 2.14 1.71 -20.0% PASS
total/synth/SWAP10/s0 2.16 1.72 -20.2% PASS
total/synth/SWAP11/s0 2.16 1.73 -19.9% PASS
total/synth/SWAP12/s0 2.16 1.72 -20.3% PASS
total/synth/SWAP13/s0 2.16 1.73 -19.8% PASS
total/synth/SWAP14/s0 2.16 1.72 -20.4% PASS
total/synth/SWAP15/s0 2.17 1.92 -11.8% PASS
total/synth/SWAP16/s0 2.16 1.76 -18.6% PASS
total/synth/SWAP2/s0 2.14 1.71 -19.9% PASS
total/synth/SWAP3/s0 2.15 1.71 -20.4% PASS
total/synth/SWAP4/s0 2.14 1.71 -20.3% PASS
total/synth/SWAP5/s0 2.14 1.72 -19.9% PASS
total/synth/SWAP6/s0 2.16 1.75 -18.7% PASS
total/synth/SWAP7/s0 2.15 1.72 -20.1% PASS
total/synth/SWAP8/s0 2.16 2.09 -3.1% PASS
total/synth/SWAP9/s0 2.16 1.77 -18.3% PASS
total/synth/XOR/b0 2.46 2.69 +9.4% PASS
total/synth/XOR/b1 2.59 2.81 +8.6% PASS
total/synth/loop_v1 7.24 7.35 +1.6% PASS
total/synth/loop_v2 7.24 7.65 +5.7% PASS

Summary: 194 benchmarks, 1 regressions


✅ Performance Check Passed (multipass)

Performance Benchmark Results (threshold: 20%)

Benchmark Baseline (us) Current (us) Change Status
total/main/blake2b_huff/8415nulls 2.06 1.76 -14.7% PASS
total/main/blake2b_huff/empty 0.13 0.11 -12.2% PASS
total/main/blake2b_shifts/8415nulls 6.56 7.69 +17.3% PASS
total/main/sha1_divs/5311 3.45 3.15 -8.6% PASS
total/main/sha1_divs/empty 0.05 0.05 -11.3% PASS
total/main/sha1_shifts/5311 3.76 4.59 +22.1% PASS
total/main/sha1_shifts/empty 0.06 0.07 +14.8% PASS
total/main/snailtracer/benchmark 73.10 59.70 -18.3% PASS
total/main/structarray_alloc/nfts_rank 0.30 0.33 +7.5% PASS
total/main/swap_math/insufficient_liquidity 0.03 0.03 -10.3% PASS
total/main/swap_math/received 0.03 0.03 -10.9% PASS
total/main/swap_math/spent 0.03 0.03 -9.8% PASS
total/main/weierstrudel/1 0.41 0.34 -18.0% PASS
total/main/weierstrudel/15 3.02 2.53 -16.2% PASS
total/micro/JUMPDEST_n0/empty 0.18 0.16 -9.3% PASS
total/micro/jump_around/empty 0.73 0.64 -12.3% PASS
total/micro/loop_with_many_jumpdests/empty 2.46 2.42 -1.7% PASS
total/micro/memory_grow_mload/by1 0.24 0.24 -1.5% PASS
total/micro/memory_grow_mload/by16 0.25 0.25 -1.2% PASS
total/micro/memory_grow_mload/by32 0.28 0.26 -7.0% PASS
total/micro/memory_grow_mload/nogrow 0.24 0.23 -1.2% PASS
total/micro/memory_grow_mstore/by1 0.28 0.25 -11.5% PASS
total/micro/memory_grow_mstore/by16 0.29 0.25 -12.0% PASS
total/micro/memory_grow_mstore/by32 0.30 0.26 -14.2% PASS
total/micro/memory_grow_mstore/nogrow 0.27 0.24 -11.7% PASS
total/micro/signextend/one 0.42 0.40 -4.2% PASS
total/micro/signextend/zero 0.41 0.40 -3.9% PASS
total/synth/ADD/b0 0.02 0.02 -0.8% PASS
total/synth/ADD/b1 0.02 0.02 -7.9% PASS
total/synth/ADDRESS/a0 1.14 2.27 +98.6% PASS
total/synth/ADDRESS/a1 1.17 2.30 +96.6% PASS
total/synth/AND/b0 0.02 0.02 -1.4% PASS
total/synth/AND/b1 0.02 0.02 -4.8% PASS
total/synth/BYTE/b0 1.97 2.73 +38.6% PASS
total/synth/BYTE/b1 2.32 2.73 +17.3% PASS
total/synth/CALLDATASIZE/a0 0.65 1.37 +110.0% PASS
total/synth/CALLDATASIZE/a1 0.68 1.36 +101.0% PASS
total/synth/CALLER/a0 1.14 2.28 +100.2% PASS
total/synth/CALLER/a1 1.17 2.30 +96.4% PASS
total/synth/CALLVALUE/a0 0.65 1.37 +110.1% PASS
total/synth/CALLVALUE/a1 0.68 1.37 +101.5% PASS
total/synth/CODESIZE/a0 0.65 1.37 +109.3% PASS
total/synth/CODESIZE/a1 0.68 1.37 +102.1% PASS
total/synth/DUP1/d0 0.02 0.02 +0.3% PASS
total/synth/DUP1/d1 0.02 0.02 -5.2% PASS
total/synth/DUP10/d0 0.02 0.02 +0.8% PASS
total/synth/DUP10/d1 0.02 0.02 -3.1% PASS
total/synth/DUP11/d0 0.02 0.02 +0.5% PASS
total/synth/DUP11/d1 0.02 0.02 -3.1% PASS
total/synth/DUP12/d0 0.02 0.02 +0.6% PASS
total/synth/DUP12/d1 0.02 0.02 -2.8% PASS
total/synth/DUP13/d0 0.02 0.02 +0.5% PASS
total/synth/DUP13/d1 0.02 0.02 -6.5% PASS
total/synth/DUP14/d0 0.02 0.02 +1.2% PASS
total/synth/DUP14/d1 0.02 0.02 -3.5% PASS
total/synth/DUP15/d0 0.02 0.02 -0.4% PASS
total/synth/DUP15/d1 0.02 0.02 -3.1% PASS
total/synth/DUP16/d0 0.02 0.02 -0.1% PASS
total/synth/DUP16/d1 0.02 0.02 -3.4% PASS
total/synth/DUP2/d0 0.02 0.02 +0.3% PASS
total/synth/DUP2/d1 0.02 0.02 -5.3% PASS
total/synth/DUP3/d0 0.02 0.02 +1.0% PASS
total/synth/DUP3/d1 0.02 0.02 -5.0% PASS
total/synth/DUP4/d0 0.02 0.02 +1.1% PASS
total/synth/DUP4/d1 0.02 0.02 -5.3% PASS
total/synth/DUP5/d0 0.02 0.02 +3.0% PASS
total/synth/DUP5/d1 0.02 0.02 -5.4% PASS
total/synth/DUP6/d0 0.02 0.02 -0.0% PASS
total/synth/DUP6/d1 0.02 0.02 -5.3% PASS
total/synth/DUP7/d0 0.02 0.02 -0.3% PASS
total/synth/DUP7/d1 0.02 0.02 -2.7% PASS
total/synth/DUP8/d0 0.02 0.02 +0.7% PASS
total/synth/DUP8/d1 0.02 0.02 -2.8% PASS
total/synth/DUP9/d0 0.02 0.02 +0.5% PASS
total/synth/DUP9/d1 0.02 0.02 -2.5% PASS
total/synth/EQ/b0 0.02 0.02 -1.3% PASS
total/synth/EQ/b1 0.02 0.02 -5.1% PASS
total/synth/GAS/a0 1.01 1.49 +47.7% PASS
total/synth/GAS/a1 1.05 1.49 +41.5% PASS
total/synth/GT/b0 0.02 0.02 -3.5% PASS
total/synth/GT/b1 0.02 0.02 -8.3% PASS
total/synth/ISZERO/u0 0.02 0.02 -6.9% PASS
total/synth/JUMPDEST/n0 0.18 0.17 -5.1% PASS
total/synth/LT/b0 0.02 0.02 -1.3% PASS
total/synth/LT/b1 0.02 0.02 -8.1% PASS
total/synth/MSIZE/a0 0.02 0.02 -4.1% PASS
total/synth/MSIZE/a1 0.02 0.02 -5.3% PASS
total/synth/MUL/b0 4.30 4.07 -5.5% PASS
total/synth/MUL/b1 4.45 4.02 -9.8% PASS
total/synth/NOT/u0 0.02 0.02 -7.0% PASS
total/synth/OR/b0 0.02 0.02 -1.6% PASS
total/synth/OR/b1 0.02 0.02 -5.0% PASS
total/synth/PC/a0 0.02 0.02 -4.1% PASS
total/synth/PC/a1 0.02 0.02 -5.0% PASS
total/synth/PUSH1/p0 0.02 0.02 -1.6% PASS
total/synth/PUSH1/p1 0.02 0.02 -3.3% PASS
total/synth/PUSH10/p0 0.04 0.04 -5.7% PASS
total/synth/PUSH10/p1 0.04 0.04 -6.6% PASS
total/synth/PUSH11/p0 0.05 0.04 -6.3% PASS
total/synth/PUSH11/p1 0.04 0.04 -5.9% PASS
total/synth/PUSH12/p0 0.05 0.04 -6.8% PASS
total/synth/PUSH12/p1 0.05 0.04 -7.3% PASS
total/synth/PUSH13/p0 0.05 0.05 -7.0% PASS
total/synth/PUSH13/p1 0.05 0.05 -6.7% PASS
total/synth/PUSH14/p0 0.05 0.05 -9.3% PASS
total/synth/PUSH14/p1 0.05 0.05 -10.4% PASS
total/synth/PUSH15/p0 0.06 0.05 -9.5% PASS
total/synth/PUSH15/p1 0.06 0.05 -10.6% PASS
total/synth/PUSH16/p0 0.06 0.05 -9.8% PASS
total/synth/PUSH16/p1 0.06 0.05 -10.1% PASS
total/synth/PUSH17/p0 0.06 0.06 -8.9% PASS
total/synth/PUSH17/p1 0.06 0.06 -9.7% PASS
total/synth/PUSH18/p0 0.06 0.06 -8.7% PASS
total/synth/PUSH18/p1 0.06 0.06 -9.6% PASS
total/synth/PUSH19/p0 0.07 0.06 -9.5% PASS
total/synth/PUSH19/p1 0.07 0.06 -10.0% PASS
total/synth/PUSH2/p0 0.02 0.02 -3.3% PASS
total/synth/PUSH2/p1 0.02 0.02 -5.9% PASS
total/synth/PUSH20/p0 0.07 0.06 -8.3% PASS
total/synth/PUSH20/p1 0.07 0.06 -8.6% PASS
total/synth/PUSH21/p0 0.07 0.07 -7.9% PASS
total/synth/PUSH21/p1 0.07 0.07 -8.1% PASS
total/synth/PUSH22/p0 1.83 1.87 +2.4% PASS
total/synth/PUSH22/p1 1.56 1.85 +18.5% PASS
total/synth/PUSH23/p0 1.83 1.92 +4.9% PASS
total/synth/PUSH23/p1 1.74 1.85 +6.2% PASS
total/synth/PUSH24/p0 1.84 1.93 +5.2% PASS
total/synth/PUSH24/p1 1.56 1.86 +18.8% PASS
total/synth/PUSH25/p0 1.84 1.93 +5.2% PASS
total/synth/PUSH25/p1 1.57 1.85 +18.4% PASS
total/synth/PUSH26/p0 1.84 1.94 +5.3% PASS
total/synth/PUSH26/p1 1.58 1.86 +17.8% PASS
total/synth/PUSH27/p0 1.84 1.95 +5.7% PASS
total/synth/PUSH27/p1 1.57 1.86 +18.5% PASS
total/synth/PUSH28/p0 1.85 1.96 +5.9% PASS
total/synth/PUSH28/p1 1.57 1.86 +18.2% PASS
total/synth/PUSH29/p0 1.85 1.96 +5.8% PASS
total/synth/PUSH29/p1 1.58 1.87 +18.6% PASS
total/synth/PUSH3/p0 0.02 0.02 -3.9% PASS
total/synth/PUSH3/p1 0.02 0.02 -4.8% PASS
total/synth/PUSH30/p0 1.87 1.85 -0.8% PASS
total/synth/PUSH30/p1 1.59 1.87 +17.7% PASS
total/synth/PUSH31/p0 1.86 1.99 +6.9% PASS
total/synth/PUSH31/p1 1.62 1.90 +16.8% PASS
total/synth/PUSH32/p0 1.86 2.00 +7.2% PASS
total/synth/PUSH32/p1 1.59 1.89 +19.2% PASS
total/synth/PUSH4/p0 0.03 0.03 -5.1% PASS
total/synth/PUSH4/p1 0.03 0.03 -4.9% PASS
total/synth/PUSH5/p0 0.03 0.03 -6.6% PASS
total/synth/PUSH5/p1 0.03 0.03 -6.9% PASS
total/synth/PUSH6/p0 0.03 0.03 -6.5% PASS
total/synth/PUSH6/p1 0.03 0.03 -7.0% PASS
total/synth/PUSH7/p0 0.03 0.03 -5.7% PASS
total/synth/PUSH7/p1 0.03 0.03 -6.2% PASS
total/synth/PUSH8/p0 0.04 0.04 -6.0% PASS
total/synth/PUSH8/p1 0.04 0.03 -6.3% PASS
total/synth/PUSH9/p0 0.04 0.04 -5.5% PASS
total/synth/PUSH9/p1 0.04 0.04 -5.8% PASS
total/synth/RETURNDATASIZE/a0 0.65 1.36 +107.7% PASS
total/synth/RETURNDATASIZE/a1 0.68 1.36 +99.6% PASS
total/synth/SAR/b0 3.55 3.37 -5.1% PASS
total/synth/SAR/b1 4.11 3.68 -10.4% PASS
total/synth/SGT/b0 0.02 0.02 -1.4% PASS
total/synth/SGT/b1 0.02 0.02 -5.5% PASS
total/synth/SHL/b0 4.01 3.73 -7.0% PASS
total/synth/SHL/b1 2.82 2.57 -8.8% PASS
total/synth/SHR/b0 3.14 3.47 +10.2% PASS
total/synth/SHR/b1 2.99 2.57 -14.2% PASS
total/synth/SIGNEXTEND/b0 2.49 2.56 +2.7% PASS
total/synth/SIGNEXTEND/b1 2.84 2.60 -8.5% PASS
total/synth/SLT/b0 0.02 0.02 -1.5% PASS
total/synth/SLT/b1 0.02 0.02 -5.1% PASS
total/synth/SUB/b0 0.02 0.02 -1.1% PASS
total/synth/SUB/b1 0.02 0.02 -8.6% PASS
total/synth/SWAP1/s0 0.02 0.02 -0.5% PASS
total/synth/SWAP10/s0 0.02 0.02 -0.5% PASS
total/synth/SWAP11/s0 0.02 0.01 -1.7% PASS
total/synth/SWAP12/s0 0.02 0.02 -1.7% PASS
total/synth/SWAP13/s0 0.02 0.02 -1.8% PASS
total/synth/SWAP14/s0 0.02 0.02 -1.7% PASS
total/synth/SWAP15/s0 0.02 0.02 -1.7% PASS
total/synth/SWAP16/s0 0.02 0.02 -1.9% PASS
total/synth/SWAP2/s0 0.02 0.02 -0.8% PASS
total/synth/SWAP3/s0 0.02 0.01 -1.6% PASS
total/synth/SWAP4/s0 0.02 0.01 -1.5% PASS
total/synth/SWAP5/s0 0.02 0.02 -0.2% PASS
total/synth/SWAP6/s0 0.02 0.01 -1.4% PASS
total/synth/SWAP7/s0 0.02 0.01 -1.8% PASS
total/synth/SWAP8/s0 0.02 0.01 -1.8% PASS
total/synth/SWAP9/s0 0.02 0.01 -1.8% PASS
total/synth/XOR/b0 0.02 0.02 -1.3% PASS
total/synth/XOR/b1 0.02 0.02 -5.0% PASS
total/synth/loop_v1 1.84 1.73 -6.0% PASS
total/synth/loop_v2 1.81 1.78 -1.3% PASS

Summary: 194 benchmarks, 0 regressions


@starwarfan starwarfan force-pushed the fix-benchmark-warmup branch 2 times, most recently from 8535d53 to 4cace88 Compare March 2, 2026 03:50
@starwarfan starwarfan changed the title fix(benchmark): add warmup loop and dynamic calldata generation test(evm): add warmup loop and dynamic calldata generation Mar 3, 2026
@starwarfan starwarfan force-pushed the fix-benchmark-warmup branch from 806eadd to 20bc225 Compare March 3, 2026 08:01
@starwarfan starwarfan marked this pull request as draft March 3, 2026 11:57
@starwarfan starwarfan changed the title test(evm): add warmup loop and dynamic calldata generation test(evm): add comprehensive Solidity test contracts and performance benchmarks Mar 3, 2026
@starwarfan starwarfan marked this pull request as ready for review March 3, 2026 12:22
@starwarfan starwarfan marked this pull request as draft March 3, 2026 12:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants