You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Motivation**
For SP1 we already have profiling tools like Samply to generate
flamegraphs of the execution and get an idea of the spent cycles during
the execution, but it is not always desired to run those.
As an alternative, granulating the current cycle's report is very
useful.
**Description**
- Decouple L1 stateless validation
- Add `report_cycles!` macro that wraps a block of code with optional
cycle-tracking prints
- Wrap code blocks inside the `report_cycles!` macro to track cycles of
them.
**Example Output**
```shell
2025-11-06T20:27:17.842628Z INFO ethrex_replay::fetcher: Getting block 23721540 data from cache
2025-11-06T20:27:22.669322Z INFO execute: sp1_core_executor::syscalls::write: ┌╴read_input
2025-11-06T20:27:23.074825Z INFO execute: sp1_core_executor::syscalls::write: └╴12,868,356 cycles
2025-11-06T20:27:23.074862Z INFO execute: sp1_core_executor::syscalls::write: ┌╴execution
2025-11-06T20:27:23.074915Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴GuestProgramState::from(execution_witness)
stderr: WARNING: Using insecure random number generator.
2025-11-06T20:27:28.337580Z INFO execute: sp1_core_executor::syscalls::write: │ └╴191,414,247 cycles
2025-11-06T20:27:28.337737Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴initialize_block_header_hashes
2025-11-06T20:27:28.338575Z INFO execute: sp1_core_executor::syscalls::write: │ └╴11,402 cycles
2025-11-06T20:27:28.338592Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴get_first_invalid_block_hash
2025-11-06T20:27:28.338617Z INFO execute: sp1_core_executor::syscalls::write: │ └╴585 cycles
2025-11-06T20:27:28.338707Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴state_trie_root
2025-11-06T20:27:29.836352Z INFO execute: sp1_core_executor::syscalls::write: │ └╴38,685,313 cycles
2025-11-06T20:27:29.836390Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴validate_block
2025-11-06T20:27:29.837260Z INFO execute: sp1_core_executor::syscalls::write: │ └╴16,766 cycles
2025-11-06T20:27:29.837278Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴setup_evm
2025-11-06T20:27:29.837297Z INFO execute: sp1_core_executor::syscalls::write: │ └╴458 cycles
2025-11-06T20:27:29.837310Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴execute_block
2025-11-06T20:27:57.108787Z INFO execute: sp1_core_executor::syscalls::write: │ └╴531,651,252 cycles
2025-11-06T20:27:57.108819Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴get_state_transitions
2025-11-06T20:27:57.175020Z INFO execute: sp1_core_executor::syscalls::write: │ └╴2,383,891 cycles
2025-11-06T20:27:57.175052Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴apply_account_updates
2025-11-06T20:27:59.351855Z INFO execute: sp1_core_executor::syscalls::write: │ └╴60,042,986 cycles
2025-11-06T20:27:59.381137Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴validate_gas_and_receipts
2025-11-06T20:27:59.381168Z INFO execute: sp1_core_executor::syscalls::write: │ └╴379 cycles
2025-11-06T20:27:59.381180Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴validate_receipts_root
2025-11-06T20:27:59.621535Z INFO execute: sp1_core_executor::syscalls::write: │ └╴7,450,196 cycles
2025-11-06T20:27:59.621572Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴validate_requests_hash
2025-11-06T20:27:59.621785Z INFO execute: sp1_core_executor::syscalls::write: │ └╴2,734 cycles
2025-11-06T20:27:59.621851Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴get_final_state_root
2025-11-06T20:28:00.570636Z INFO execute: sp1_core_executor::syscalls::write: │ └╴24,414,357 cycles
2025-11-06T20:28:00.570669Z INFO execute: sp1_core_executor::syscalls::write: │ ┌╴validate_state_root
2025-11-06T20:28:00.570689Z INFO execute: sp1_core_executor::syscalls::write: │ └╴624 cycles
2025-11-06T20:28:00.652210Z INFO execute: sp1_core_executor::syscalls::write: └╴858,494,608 cycles
2025-11-06T20:28:00.652242Z INFO execute: sp1_core_executor::syscalls::write: ┌╴commit_public_inputs
2025-11-06T20:28:00.652577Z INFO execute: sp1_core_executor::syscalls::write: └╴1,632 cycles
2025-11-06T20:28:00.731639Z INFO execute: sp1_prover: gas: 1145215937
2025-11-06T20:28:00.733918Z INFO ethrex_prover_lib::backend::sp1: Successfully executed SP1 program in 38.09s
2025-11-06T20:28:00.734204Z INFO ethrex_replay::report: [mainnet] Block: 23721540, Gas: 20284615, #Txs: 223, Execution Time: 42s 794ms | https://etherscan.io/block/23721540
```
---------
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Gianbelinche <[email protected]>
0 commit comments