Skip to content

Instantly share code, notes, and snippets.

@jsign
Last active November 16, 2025 00:02
Show Gist options
  • Select an option

  • Save jsign/6744700e1bf423604cf03ab6e80eb3ae to your computer and use it in GitHub Desktop.

Select an option

Save jsign/6744700e1bf423604cf03ab6e80eb3ae to your computer and use it in GitHub Desktop.
REPORT
------------------------------------
STEPS 214,070,839
COST DISTRIBUTION COST %
--------------------------------------------
BASE 293,601,280 1.14%
MAIN 14,556,817,052 56.49%
OPCODES 3,375,402,776 13.10%
PRECOMPILES 5,780,354,908 22.43%
MEMORY 1,762,099,785 6.84%
FROPS 3,059,051,741 11.87%
RAM USAGE 30,901,814 5.76%
COST BY OPCODE COUNT COST % RANK
-----------------------------------------------------------------
OP ltu 11,002,867 825,215,025 3.20% #3
OP lt 578,496 43,387,200 0.17%
OP eq 962,936 72,220,200 0.28%
OP add 22,956,559 596,870,534 2.32% #4
OP sub 1,023,798 76,784,850 0.30%
OP and 3,311,832 248,387,400 0.96%
OP or 11,548,818 866,161,350 3.36% #2
OP xor 1,791,895 134,392,125 0.52%
OP add_w 299,029 22,427,175 0.09%
OP sub_w 327,734 24,580,050 0.10%
OP pubout 32 0 0.00%
OP sll 3,411,013 184,194,702 0.71%
OP srl 2,097,875 113,285,250 0.44%
OP sra 924,073 49,899,942 0.19%
OP srl_w 98,340 5,310,360 0.02%
OP signextend_b 179,056 9,669,024 0.04%
OP signextend_h 211,179 11,403,666 0.04%
OP signextend_w 284,102 15,341,508 0.06%
OP muluh 326,818 31,047,710 0.12%
OP mul 471,487 44,791,265 0.17%
OP divu 350 33,250 0.00%
OP remu 2 190 0.00%
OP keccak 44,275 5,671,981,700 22.01% #1
OP arith256_mod 1,737 2,362,320 0.01%
OP secp256k1_add 33,253 45,224,080 0.18%
OP secp256k1_dbl 44,062 59,924,320 0.23%
OP fcall_param 559 0 0.00%
OP fcall 366 0 0.00%
OP fcall_get 1,138 0 0.00%
OP sha256 99 862,488 0.00%
FROPS BY OPCODE COUNT HIT COST % RANK
------------------------------------------------------------------------
FROP ltu 2,177,684 16.52% 163,326,300 0.63%
FROP lt 703,965 54.89% 52,797,375 0.20%
FROP eq 10,681,900 91.73% 801,142,500 3.11% #1
FROP add 18,209,215 44.23% 473,439,590 1.84% #4
FROP sub 1,324,308 56.40% 99,323,100 0.39%
FROP and 7,609,004 69.67% 570,675,300 2.21% #3
FROP or 1,989,891 14.70% 149,241,825 0.58%
FROP xor 245,570 12.05% 18,417,750 0.07%
FROP add_w 94,309 23.98% 7,073,175 0.03%
FROP sub_w 613,789 65.19% 46,034,175 0.18%
FROP sll 11,739,796 77.49% 633,948,984 2.46% #2
FROP srl 631,712 23.14% 34,112,448 0.13%
FROP sra 4,551 0.49% 245,754 0.00%
FROP srl_w 62,845 38.99% 3,393,630 0.01%
FROP muluh 20,640 5.94% 1,960,800 0.01%
FROP mul 41,176 8.03% 3,911,720 0.02%
FROP divu 77 18.03% 7,315 0.00%
TOP STEP FUNCTIONS
------------------
69,206,494 32.33% compiler_builtins::mem::memcpy
18,156,471 8.48% alloy_primitives::utils::keccak256::keccak256
15,555,750 7.27% mpt::mpt::rlp::<impl alloy_rlp::decode::Decodable for mpt::mpt::node::Node<M>>::decode
10,506,215 4.91% memcmp
8,883,151 4.15% mpt::mpt::rlp::<impl mpt::mpt::node::Node<M>>::resolve_digests
8,687,377 4.06% alloy_evm::evm::Evm::transact
7,296,058 3.41% core::array::<impl core::hash::Hash for [T; N]>::hash
6,369,342 2.98% revm_bytecode::legacy::analysis::analyze_legacy
5,984,944 2.80% memset
4,254,325 1.99% foldhash::hash_bytes_long
TOP COST FUNCTIONS
------------------
6,439,752,208 24.99% compiler_builtins::mem::memcpy
5,675,453,328 22.02% syscall_keccak_f
1,755,976,829 6.81% alloy_primitives::utils::keccak256::keccak256
1,375,488,690 5.34% mpt::mpt::rlp::<impl alloy_rlp::decode::Decodable for mpt::mpt::node::Node<M>>::decode
837,336,604 3.25% memcmp
830,679,160 3.22% mpt::mpt::rlp::<impl mpt::mpt::node::Node<M>>::resolve_digests
771,334,142 2.99% alloy_evm::evm::Evm::transact
759,355,878 2.95% core::array::<impl core::hash::Hash for [T; N]>::hash
619,857,683 2.41% revm_bytecode::legacy::analysis::analyze_legacy
584,162,942 2.27% memset
DETAIL FUNCTION compiler_builtins::mem::memcpy
----------------------------------------------
STEPS 69,206,494 32.33%
COST 6,439,752,208 24.99%
| COST BY OPCODE COUNT COST % RANK
| -----------------------------------------------------------------
| OP ltu 7,625,789 571,934,175 8.88% #1
| OP add 11,234,941 292,108,466 4.54% #2
| OP sub 200,740 15,055,500 0.23%
| OP and 1,528,366 114,627,450 1.78% #4
| OP or 1,739,022 130,426,650 2.03% #3
| OP sub_w 305,773 22,932,975 0.36%
| OP sll 1,249,338 67,464,252 1.05%
| OP srl 1,250,017 67,500,918 1.05%
| OP signextend_h 198,812 10,735,848 0.17%
| OP signextend_w 230,392 12,441,168 0.19%
| TOP STEP CALLERS (calls, steps)
| -------------------------------
| 492,687 69,699,181 100.71% memcpy
DETAIL FUNCTION syscall_keccak_f
--------------------------------
STEPS 44,275 0.02%
COST 5,675,453,328 22.02%
| COST BY OPCODE COUNT COST % RANK
| -----------------------------------------------------------------
| OP keccak 44,275 5,671,981,700 99.94% #1
| TOP STEP CALLERS (calls, steps)
| -------------------------------
| 44,275 88,550 200.00% alloy_primitives::utils::keccak256::keccak256
DETAIL FUNCTION alloy_primitives::utils::keccak256::keccak256
-------------------------------------------------------------
STEPS 18,156,471 8.48%
COST 1,755,976,829 6.81%
| COST BY OPCODE COUNT COST % RANK
| -----------------------------------------------------------------
| OP ltu 5,288 396,600 0.02%
| OP eq 28,808 2,160,600 0.12%
| OP add 232,395 6,042,270 0.34% #4
| OP sub 5,288 396,600 0.02%
| OP or 3,220,282 241,521,150 13.75% #1
| OP xor 659,960 49,497,000 2.82% #2
| OP add_w 6,708 503,100 0.03%
| OP sll 471,878 25,481,412 1.45% #3
| OP srl 5,095 275,130 0.02%
| OP muluh 6,708 637,260 0.04%
| TOP STEP CALLERS (calls, steps)
| -------------------------------
| 5,478 6,360,456 35.03% sparsestate::hash_triee_nodes
| 3,319 4,046,543 22.29% mpt::mpt::rlp::<impl mpt::mpt::node::Node<M>>::memoize
| 1,925 326,464 1.80% revm_interpreter::instructions::system::keccak256
| 1,784 267,600 1.47% <sparsestate::SparseState as reth_stateless::trie::StatelessTrie>::storage
| 1,104 165,600 0.91% alloy_primitives::bits::bloom::Bloom::accrue_raw_log
| 380 57,000 0.31% hashbrown::raw::RawIterRange<T>::fold_impl
| 338 50,700 0.28% <sparsestate::SparseState as reth_stateless::trie::StatelessTrie>::account
| 290 623,678 3.44% alloy_trie::hash_builder::HashBuilder<K>::update
| 244 36,600 0.20% <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter
| 166 5,826,392 32.09% sparsestate::bytecode_hashing
DETAIL FUNCTION mpt::mpt::rlp::<impl alloy_rlp::decode::Decodable for mpt::mpt::node::Node<M>>::decode
------------------------------------------------------------------------------------------------------
STEPS 15,555,750 7.27%
COST 1,375,488,690 5.34%
| COST BY OPCODE COUNT COST % RANK
| -----------------------------------------------------------------
| OP ltu 117,022 8,776,650 0.64%
| OP lt 137,519 10,313,925 0.75% #4
| OP eq 60,470 4,535,250 0.33%
| OP add 1,234,284 32,091,384 2.33% #2
| OP sub 36,328 2,724,600 0.20%
| OP and 159,575 11,968,125 0.87% #3
| OP or 1,350,505 101,287,875 7.36% #1
| OP xor 73,882 5,541,150 0.40%
| OP add_w 10,660 799,500 0.06%
| OP sub_w 5,514 413,550 0.03%
| OP sll 172,623 9,321,642 0.68%
| OP srl 22,056 1,191,024 0.09%
| OP srl_w 11,028 595,512 0.04%
| OP signextend_b 137,757 7,438,878 0.54%
| TOP STEP CALLERS (calls, steps)
| -------------------------------
| 5,481 15,561,231 100.04% mpt::mpt::rlp::<impl mpt::mpt::node::Node<M>>::resolve_digests
DETAIL FUNCTION memcmp
----------------------
STEPS 10,506,215 4.91%
COST 837,336,604 3.25%
| COST BY OPCODE COUNT COST % RANK
| -----------------------------------------------------------------
| OP add 1,825,504 47,463,104 5.67% #1
| TOP STEP CALLERS (calls, steps)
| -------------------------------
| 33,599 279,103 2.66% ziskos::zisklib::lib::secp256k1::curve::secp256k1_double_scalar_mul_with_g
| 22,209 2,663,685 25.35% revm_interpreter::instructions::control::jumpi
| 12,128 1,692,635 16.11% revm_interpreter::instructions::bitwise::iszero
| 8,058 1,259,712 11.99% mpt::mpt::rlp::<impl mpt::mpt::node::Node<M>>::resolve_digests
| 7,106 520,437 4.95% revm_interpreter::instructions::bitwise::eq
| 3,297 477,170 4.54% revm_context::journal::inner::JournalInner<ENTRY>::sload
| 3,274 110,145 1.05% revm_state::Account::is_empty
| 2,579 307,235 2.92% revm_handler::frame::EthFrame::init_with_context
| 2,370 76,920 0.73% revm_interpreter::instructions::bitwise::slt
| 1,977 258,806 2.46% revm_interpreter::instructions::host::sstore
DETAIL FUNCTION mpt::mpt::rlp::<impl mpt::mpt::node::Node<M>>::resolve_digests
------------------------------------------------------------------------------
STEPS 8,883,151 4.15%
COST 830,679,160 3.22%
| COST BY OPCODE COUNT COST % RANK
| -----------------------------------------------------------------
| OP eq 103,026 7,726,950 0.93%
| OP add 858,686 22,325,836 2.69% #3
| OP sub 17,587 1,319,025 0.16%
| OP and 333,064 24,979,800 3.01% #2
| OP or 453,771 34,032,825 4.10% #1
| OP xor 292,349 21,926,175 2.64% #4
| OP add_w 109,321 8,199,075 0.99%
| OP sll 246,013 13,284,702 1.60%
| OP srl 62,089 3,352,806 0.40%
| OP muluh 54,031 5,132,945 0.62%
| OP mul 116,120 11,031,400 1.33%
| TOP STEP CALLERS (calls, steps)
| -------------------------------
| 332 5,036,707 56.70% <sparsestate::SparseState as reth_stateless::trie::StatelessTrie>::account
| 6 228 0.00% sparsestate::SparseState::storage_trie_mut
| 1 3,846,555 43.30% <sparsestate::SparseState as reth_stateless::trie::StatelessTrie>::new
DETAIL FUNCTION alloy_evm::evm::Evm::transact
---------------------------------------------
STEPS 8,687,377 4.06%
COST 771,334,142 2.99%
| COST BY OPCODE COUNT COST % RANK
| -----------------------------------------------------------------
| OP ltu 459,159 34,436,925 4.46% #1
| OP eq 854 64,050 0.01%
| OP add 971,218 25,251,668 3.27% #3
| OP sub 457,379 34,303,425 4.45% #2
| OP and 871 65,325 0.01%
| OP or 42,580 3,193,500 0.41% #4
| OP add_w 200 15,000 0.00%
| OP sll 2,518 135,972 0.02%
| OP srl 4,674 252,396 0.03%
| OP sra 2 108 0.00%
| OP signextend_b 133 7,182 0.00%
| OP signextend_h 6,857 370,278 0.05%
| OP signextend_w 7,256 391,824 0.05%
| OP muluh 645 61,275 0.01%
| OP mul 4,230 401,850 0.05%
| TOP STEP CALLERS (calls, steps)
| -------------------------------
| 133 8,687,510 100.00% alloy_evm::block::BlockExecutor::execute_block
DETAIL FUNCTION core::array::<impl core::hash::Hash for [T; N]>::hash
---------------------------------------------------------------------
STEPS 7,296,058 3.41%
COST 759,355,878 2.95%
| COST BY OPCODE COUNT COST % RANK
| -----------------------------------------------------------------
| OP lt 61,831 4,637,325 0.61%
| OP add 61,831 1,607,606 0.21%
| OP and 61,831 4,637,325 0.61%
| OP or 1,849,284 138,696,300 18.26% #1
| OP xor 185,493 13,911,975 1.83% #3
| OP sll 309,155 16,694,370 2.20% #2
| OP srl 123,662 6,677,748 0.88% #4
| OP sra 61,831 3,338,874 0.44%
| OP muluh 61,831 5,873,945 0.77%
| OP mul 61,831 5,873,945 0.77%
| TOP STEP CALLERS (calls, steps)
| -------------------------------
| 54,031 6,429,689 88.13% mpt::mpt::rlp::<impl mpt::mpt::node::Node<M>>::resolve_digests
| 5,478 651,882 8.93% hashbrown::map::HashMap<K,V,S,A>::insert
| 892 106,148 1.45% <sparsestate::SparseState as reth_stateless::trie::StatelessTrie>::storage
| 576 68,544 0.94% hashbrown::rustc_entry::<impl hashbrown::map::HashMap<K,V,S,A>>::rustc_entry
| 444 52,836 0.72% hashbrown::raw::RawTable<T,A>::reserve_rehash
| 244 29,036 0.40% <sparsestate::SparseState as reth_stateless::trie::StatelessTrie>::calculate_state_root
| 166 19,754 0.27% hashbrown::map::HashMap<K,V,S,A>::insert
DETAIL FUNCTION revm_bytecode::legacy::analysis::analyze_legacy
---------------------------------------------------------------
STEPS 6,369,342 2.98%
COST 619,857,683 2.41%
| COST BY OPCODE COUNT COST % RANK
| -----------------------------------------------------------------
| OP ltu 839,417 62,956,275 10.16% #1
| OP lt 242,699 18,202,425 2.94% #4
| OP eq 487 36,525 0.01%
| OP add 1,112,416 28,922,816 4.67% #3
| OP sub 50,261 3,769,575 0.61%
| OP and 48,339 3,625,425 0.58%
| OP sll 230 12,420 0.00%
| OP srl 306 16,524 0.00%
| OP sra 836,568 45,174,672 7.29% #2
| TOP STEP CALLERS (calls, steps)
| -------------------------------
| 164 6,369,506 100.00% revm_bytecode::legacy::analyzed::LegacyAnalyzedBytecode::analyze
DETAIL FUNCTION memset
----------------------
STEPS 5,984,944 2.80%
COST 584,162,942 2.27%
| COST BY OPCODE COUNT COST % RANK
| -----------------------------------------------------------------
| OP ltu 1,509,622 113,221,650 19.38% #1
| OP add 728,412 18,938,712 3.24% #2
| OP sub 99 7,425 0.00%
| OP and 63,726 4,779,450 0.82% #4
| OP or 637 47,775 0.01%
| OP sub_w 16,076 1,205,700 0.21%
| OP sll 60,790 3,282,660 0.56%
| OP muluh 60,153 5,714,535 0.98% #3
| TOP STEP CALLERS (calls, steps)
| -------------------------------
| 46,401 3,579,434 59.81% alloy_primitives::utils::keccak256::keccak256
| 6,992 1,604,234 26.80% __rustc::__rdl_alloc_zeroed
| 4,743 325,686 5.44% <revm_interpreter::interpreter::shared_memory::SharedMemory as revm_interpreter::interpreter_types::MemoryTr>::resize
| 4,346 299,874 5.01% mpt::mpt::rlp::<impl alloy_rlp::decode::Decodable for mpt::mpt::node::Node<M>>::decode
| 855 27,979 0.47% ruint::div::<impl ruint::Uint<_,_>>::div_rem_by_ref
| 464 19,692 0.33% hashbrown::raw::RawTable<T,A>::reserve_rehash
| 459 24,786 0.41% <k256::arithmetic::affine::AffinePoint as elliptic_curve::sec1::ToEncodedPoint<k256::Secp256k1>>::to_encoded_point
| 329 16,365 0.27% hashbrown::raw::RawTable<T,A>::reserve_rehash
| 277 11,349 0.19% hashbrown::raw::RawTable<T,A>::reserve_rehash
| 221 9,789 0.16% hashbrown::raw::RawTable<T,A>::reserve_rehash
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment