Skip to content

perf(levm): improve codecopy #3497

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
Open

perf(levm): improve codecopy #3497

wants to merge 10 commits into from

Conversation

gianbelinche
Copy link
Contributor

Motivation
Codecopy is x4 worse than reth

Description
Checks the size of the code to copy, and if it is less than 32 bytes it uses a fixed array as source.

Closes #issue_number

Copy link

github-actions bot commented Jul 4, 2025

Lines of code report

Total lines added: 17
Total lines removed: 0
Total lines changed: 17

Detailed view
+----------------------------------------------------------+-------+------+
| File                                                     | Lines | Diff |
+----------------------------------------------------------+-------+------+
| ethrex/crates/vm/levm/src/opcode_handlers/environment.rs | 305   | +17  |
+----------------------------------------------------------+-------+------+

Copy link

github-actions bot commented Jul 4, 2025

No significant difference was registered for any benchmark run.

Detailed Results

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
main_revm_BubbleSort 3.179 ± 0.017 3.162 3.214 1.00
main_levm_BubbleSort 4.426 ± 0.163 4.360 4.889 1.39 ± 0.05
pr_revm_BubbleSort 3.180 ± 0.020 3.158 3.224 1.00 ± 0.01
pr_levm_BubbleSort 4.536 ± 0.037 4.500 4.625 1.43 ± 0.01

Benchmark Results: ERC20Approval

Command Mean [s] Min [s] Max [s] Relative
main_revm_ERC20Approval 1.048 ± 0.009 1.030 1.060 1.02 ± 0.01
main_levm_ERC20Approval 1.509 ± 0.007 1.502 1.520 1.46 ± 0.01
pr_revm_ERC20Approval 1.031 ± 0.008 1.020 1.049 1.00
pr_levm_ERC20Approval 1.558 ± 0.016 1.546 1.600 1.51 ± 0.02

Benchmark Results: ERC20Mint

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Mint 138.1 ± 0.8 137.2 139.5 1.00 ± 0.01
main_levm_ERC20Mint 254.5 ± 3.8 250.0 260.2 1.85 ± 0.03
pr_revm_ERC20Mint 137.6 ± 1.6 136.1 141.9 1.00
pr_levm_ERC20Mint 259.8 ± 2.9 255.2 262.7 1.89 ± 0.03

Benchmark Results: ERC20Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Transfer 246.3 ± 3.1 243.9 253.3 1.01 ± 0.03
main_levm_ERC20Transfer 397.5 ± 1.6 395.3 400.8 1.63 ± 0.05
pr_revm_ERC20Transfer 244.3 ± 7.8 240.8 266.4 1.00
pr_levm_ERC20Transfer 407.9 ± 6.8 403.5 426.7 1.67 ± 0.06

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Factorial 236.8 ± 2.5 233.8 242.6 1.00
main_levm_Factorial 434.4 ± 5.2 431.4 448.9 1.83 ± 0.03
pr_revm_Factorial 242.3 ± 15.0 235.5 284.6 1.02 ± 0.06
pr_levm_Factorial 448.2 ± 2.3 444.1 453.2 1.89 ± 0.02

Benchmark Results: FactorialRecursive

Command Mean [s] Min [s] Max [s] Relative
main_revm_FactorialRecursive 1.576 ± 0.024 1.536 1.607 1.00
main_levm_FactorialRecursive 2.687 ± 0.023 2.646 2.725 1.71 ± 0.03
pr_revm_FactorialRecursive 1.610 ± 0.022 1.554 1.627 1.02 ± 0.02
pr_levm_FactorialRecursive 2.742 ± 0.031 2.712 2.816 1.74 ± 0.03

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Fibonacci 206.1 ± 0.6 205.1 207.1 1.00
main_levm_Fibonacci 428.4 ± 1.9 424.9 432.5 2.08 ± 0.01
pr_revm_Fibonacci 206.5 ± 0.8 205.4 207.8 1.00 ± 0.00
pr_levm_Fibonacci 437.7 ± 1.2 436.4 440.6 2.12 ± 0.01

Benchmark Results: FibonacciRecursive

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_FibonacciRecursive 845.0 ± 8.6 830.7 860.6 1.00
main_levm_FibonacciRecursive 1420.6 ± 18.2 1400.6 1463.7 1.68 ± 0.03
pr_revm_FibonacciRecursive 848.8 ± 8.3 835.6 862.6 1.00 ± 0.01
pr_levm_FibonacciRecursive 1410.8 ± 5.8 1403.6 1422.8 1.67 ± 0.02

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ManyHashes 9.0 ± 0.3 8.8 9.8 1.03 ± 0.04
main_levm_ManyHashes 12.8 ± 0.1 12.7 13.1 1.46 ± 0.02
pr_revm_ManyHashes 8.7 ± 0.1 8.6 8.9 1.00
pr_levm_ManyHashes 13.4 ± 0.9 13.0 15.9 1.54 ± 0.10

Benchmark Results: MstoreBench

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_MstoreBench 271.1 ± 2.0 268.6 275.6 1.00 ± 0.01
main_levm_MstoreBench 933.8 ± 5.1 928.7 943.2 3.46 ± 0.02
pr_revm_MstoreBench 269.8 ± 0.7 268.7 271.0 1.00
pr_levm_MstoreBench 931.6 ± 30.6 918.9 1018.1 3.45 ± 0.11

Benchmark Results: Push

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Push 295.0 ± 1.0 293.9 297.0 1.00
main_levm_Push 1058.0 ± 33.7 1043.4 1152.8 3.59 ± 0.11
pr_revm_Push 296.8 ± 1.7 294.9 300.5 1.01 ± 0.01
pr_levm_Push 1027.9 ± 1.3 1026.4 1029.9 3.48 ± 0.01

Copy link

github-actions bot commented Jul 4, 2025

No significant difference was registered for any benchmark run.

Detailed Results

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
main_revm_BubbleSort 3.181 ± 0.022 3.152 3.221 1.00
main_levm_BubbleSort 4.466 ± 0.037 4.419 4.555 1.40 ± 0.02
pr_revm_BubbleSort 3.183 ± 0.018 3.158 3.210 1.00 ± 0.01
pr_levm_BubbleSort 4.454 ± 0.018 4.433 4.487 1.40 ± 0.01

Benchmark Results: ERC20Approval

Command Mean [s] Min [s] Max [s] Relative
main_revm_ERC20Approval 1.042 ± 0.010 1.031 1.063 1.00 ± 0.01
main_levm_ERC20Approval 1.556 ± 0.008 1.546 1.568 1.50 ± 0.02
pr_revm_ERC20Approval 1.038 ± 0.010 1.025 1.049 1.00
pr_levm_ERC20Approval 1.553 ± 0.005 1.547 1.561 1.50 ± 0.01

Benchmark Results: ERC20Mint

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Mint 137.7 ± 0.4 136.9 138.2 1.00 ± 0.01
main_levm_ERC20Mint 254.1 ± 0.9 252.8 255.4 1.85 ± 0.01
pr_revm_ERC20Mint 137.6 ± 0.8 135.6 138.3 1.00
pr_levm_ERC20Mint 258.2 ± 2.7 254.6 263.2 1.88 ± 0.02

Benchmark Results: ERC20Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Transfer 244.1 ± 1.9 242.3 247.9 1.00 ± 0.01
main_levm_ERC20Transfer 405.3 ± 2.1 402.5 408.4 1.66 ± 0.01
pr_revm_ERC20Transfer 243.7 ± 1.7 241.4 246.7 1.00
pr_levm_ERC20Transfer 401.6 ± 2.3 399.0 406.2 1.65 ± 0.01

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Factorial 237.2 ± 2.3 234.0 240.4 1.00 ± 0.01
main_levm_Factorial 437.7 ± 4.6 432.8 446.5 1.85 ± 0.02
pr_revm_Factorial 236.2 ± 1.2 234.0 237.9 1.00
pr_levm_Factorial 457.5 ± 8.5 451.9 477.7 1.94 ± 0.04

Benchmark Results: FactorialRecursive

Command Mean [s] Min [s] Max [s] Relative
main_revm_FactorialRecursive 1.608 ± 0.026 1.567 1.641 1.02 ± 0.03
main_levm_FactorialRecursive 2.724 ± 0.017 2.701 2.752 1.72 ± 0.03
pr_revm_FactorialRecursive 1.582 ± 0.030 1.526 1.620 1.00
pr_levm_FactorialRecursive 2.719 ± 0.028 2.670 2.751 1.72 ± 0.04

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Fibonacci 208.2 ± 0.5 207.6 209.4 1.01 ± 0.00
main_levm_Fibonacci 433.9 ± 5.7 429.3 449.4 2.11 ± 0.03
pr_revm_Fibonacci 206.0 ± 0.7 205.3 207.3 1.00
pr_levm_Fibonacci 440.4 ± 1.9 438.6 445.3 2.14 ± 0.01

Benchmark Results: FibonacciRecursive

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_FibonacciRecursive 853.5 ± 7.8 838.5 864.4 1.00
main_levm_FibonacciRecursive 1434.3 ± 29.9 1411.2 1507.7 1.68 ± 0.04
pr_revm_FibonacciRecursive 855.1 ± 10.7 838.6 871.7 1.00 ± 0.02
pr_levm_FibonacciRecursive 1393.8 ± 12.8 1377.1 1418.6 1.63 ± 0.02

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ManyHashes 8.8 ± 0.1 8.7 8.9 1.01 ± 0.01
main_levm_ManyHashes 13.2 ± 0.3 13.0 13.9 1.51 ± 0.03
pr_revm_ManyHashes 8.8 ± 0.1 8.7 8.9 1.00
pr_levm_ManyHashes 13.3 ± 0.2 13.1 13.6 1.51 ± 0.02

Benchmark Results: MstoreBench

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_MstoreBench 272.9 ± 4.6 269.5 285.0 1.00 ± 0.02
main_levm_MstoreBench 935.4 ± 1.9 931.4 938.4 3.44 ± 0.03
pr_revm_MstoreBench 271.7 ± 2.5 269.3 278.3 1.00
pr_levm_MstoreBench 921.9 ± 2.5 918.9 928.1 3.39 ± 0.03

Benchmark Results: Push

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Push 297.6 ± 2.5 295.2 303.9 1.01 ± 0.01
main_levm_Push 1077.0 ± 10.0 1061.6 1100.3 3.65 ± 0.04
pr_revm_Push 295.0 ± 0.8 294.0 296.9 1.00
pr_levm_Push 1032.0 ± 3.2 1027.9 1039.1 3.50 ± 0.01

Copy link

github-actions bot commented Jul 4, 2025

Benchmark for 32abd78

Click to view benchmark
Test Base PR %
block payload building bench 0.2±0.00ns 0.2±0.00ns 0.00%

Copy link

github-actions bot commented Jul 4, 2025

Benchmark Block Execution Results Comparison Against Main

Command Mean [s] Min [s] Max [s] Relative
base 208.820 ± 0.574 208.023 209.533 1.00 ± 0.01
head 208.399 ± 0.955 206.702 209.711 1.00

@edg-l edg-l marked this pull request as ready for review July 7, 2025 13:57
@edg-l edg-l requested a review from a team as a code owner July 7, 2025 13:57
@edg-l edg-l self-assigned this Jul 7, 2025
@edg-l edg-l moved this from Todo to In review in ethrex_performance Jul 7, 2025
Comment on lines -219 to -228
for (i, byte) in current_call_frame
.bytecode
.iter()
.skip(code_offset)
.take(size)
.enumerate()
{
if let Some(data_byte) = data.get_mut(i) {
*data_byte = *byte;
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm curious: did we try changing this for into calls to copy_from_slice without using fixed-size arrays? How did the performance of that differ to the current approach?

Copy link
Contributor

Choose a reason for hiding this comment

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

We would always allocate a vec then, this would depend heavily on the bench, if we do small sized and repeated codecopies the stack fixed size array will be faster.

Copy link
Contributor

Choose a reason for hiding this comment

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

The project already imports tinyvec and smallvec, why not use one of those instead?

@edg-l
Copy link
Contributor

edg-l commented Jul 7, 2025

Currently mgas foes from 180 to 420 for codecopy benches

Copy link

github-actions bot commented Jul 7, 2025

No significant difference was registered for any benchmark run.

Detailed Results

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
main_revm_BubbleSort 3.214 ± 0.048 3.185 3.346 1.01 ± 0.02
main_levm_BubbleSort 4.567 ± 0.113 4.495 4.861 1.44 ± 0.04
pr_revm_BubbleSort 3.177 ± 0.031 3.141 3.245 1.00
pr_levm_BubbleSort 4.429 ± 0.029 4.397 4.497 1.39 ± 0.02

Benchmark Results: ERC20Approval

Command Mean [s] Min [s] Max [s] Relative
main_revm_ERC20Approval 1.056 ± 0.014 1.044 1.084 1.01 ± 0.02
main_levm_ERC20Approval 1.589 ± 0.017 1.571 1.627 1.52 ± 0.02
pr_revm_ERC20Approval 1.046 ± 0.008 1.037 1.058 1.00
pr_levm_ERC20Approval 1.543 ± 0.010 1.534 1.566 1.47 ± 0.01

Benchmark Results: ERC20Mint

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Mint 138.3 ± 1.0 136.7 140.6 1.01 ± 0.01
main_levm_ERC20Mint 268.0 ± 10.3 261.6 296.3 1.95 ± 0.08
pr_revm_ERC20Mint 137.5 ± 0.8 136.9 139.6 1.00
pr_levm_ERC20Mint 258.1 ± 2.1 255.3 261.9 1.88 ± 0.02

Benchmark Results: ERC20Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Transfer 245.5 ± 1.6 243.9 249.6 1.01 ± 0.01
main_levm_ERC20Transfer 412.8 ± 4.5 408.1 423.3 1.69 ± 0.02
pr_revm_ERC20Transfer 243.5 ± 0.6 242.5 244.7 1.00
pr_levm_ERC20Transfer 404.9 ± 4.1 402.3 416.4 1.66 ± 0.02

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Factorial 238.9 ± 1.2 237.3 241.6 1.01 ± 0.01
main_levm_Factorial 453.0 ± 2.4 448.9 457.6 1.91 ± 0.03
pr_revm_Factorial 237.6 ± 3.2 235.8 246.4 1.00
pr_levm_Factorial 455.6 ± 1.7 454.5 460.4 1.92 ± 0.03

Benchmark Results: FactorialRecursive

Command Mean [s] Min [s] Max [s] Relative
main_revm_FactorialRecursive 1.694 ± 0.024 1.645 1.724 1.00
main_levm_FactorialRecursive 2.785 ± 0.013 2.771 2.810 1.64 ± 0.02
pr_revm_FactorialRecursive 1.708 ± 0.017 1.681 1.731 1.01 ± 0.02
pr_levm_FactorialRecursive 2.692 ± 0.013 2.674 2.711 1.59 ± 0.02

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Fibonacci 210.4 ± 1.9 207.7 214.0 1.00
main_levm_Fibonacci 452.1 ± 4.5 448.6 460.3 2.15 ± 0.03
pr_revm_Fibonacci 213.8 ± 4.4 211.0 226.1 1.02 ± 0.02
pr_levm_Fibonacci 456.6 ± 3.8 453.3 462.3 2.17 ± 0.03

Benchmark Results: FibonacciRecursive

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_FibonacciRecursive 923.3 ± 13.7 895.2 942.2 1.00
main_levm_FibonacciRecursive 1497.7 ± 25.9 1476.7 1564.5 1.62 ± 0.04
pr_revm_FibonacciRecursive 935.5 ± 17.1 904.0 970.0 1.01 ± 0.02
pr_levm_FibonacciRecursive 1416.8 ± 16.3 1400.2 1449.3 1.53 ± 0.03

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ManyHashes 8.8 ± 0.1 8.7 9.0 1.01 ± 0.01
main_levm_ManyHashes 14.4 ± 0.3 14.2 15.1 1.65 ± 0.03
pr_revm_ManyHashes 8.7 ± 0.0 8.7 8.8 1.00
pr_levm_ManyHashes 13.5 ± 0.4 13.1 14.2 1.54 ± 0.05

Benchmark Results: MstoreBench

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_MstoreBench 272.7 ± 3.3 269.5 278.6 1.01 ± 0.01
main_levm_MstoreBench 897.1 ± 2.5 891.8 900.2 3.33 ± 0.02
pr_revm_MstoreBench 269.5 ± 1.3 267.8 272.1 1.00
pr_levm_MstoreBench 943.4 ± 41.9 924.2 1062.2 3.50 ± 0.16

Benchmark Results: Push

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Push 293.1 ± 1.3 291.4 296.0 1.00 ± 0.01
main_levm_Push 993.6 ± 5.1 987.0 1003.8 3.39 ± 0.03
pr_revm_Push 293.0 ± 2.1 290.9 297.4 1.00
pr_levm_Push 1077.5 ± 7.0 1069.2 1089.6 3.68 ± 0.04

Copy link

github-actions bot commented Jul 7, 2025

No significant difference was registered for any benchmark run.

Detailed Results

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
main_revm_BubbleSort 3.188 ± 0.012 3.177 3.212 1.00 ± 0.01
main_levm_BubbleSort 4.422 ± 0.015 4.397 4.455 1.39 ± 0.01
pr_revm_BubbleSort 3.186 ± 0.023 3.153 3.225 1.00
pr_levm_BubbleSort 4.603 ± 0.030 4.568 4.649 1.44 ± 0.01

Benchmark Results: ERC20Approval

Command Mean [s] Min [s] Max [s] Relative
main_revm_ERC20Approval 1.058 ± 0.007 1.047 1.073 1.00 ± 0.01
main_levm_ERC20Approval 1.525 ± 0.014 1.508 1.551 1.45 ± 0.02
pr_revm_ERC20Approval 1.053 ± 0.007 1.044 1.066 1.00
pr_levm_ERC20Approval 1.540 ± 0.005 1.532 1.547 1.46 ± 0.01

Benchmark Results: ERC20Mint

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Mint 137.4 ± 0.7 136.6 138.4 1.00
main_levm_ERC20Mint 255.3 ± 3.4 252.0 263.6 1.86 ± 0.03
pr_revm_ERC20Mint 138.7 ± 2.3 137.1 144.4 1.01 ± 0.02
pr_levm_ERC20Mint 259.6 ± 4.8 254.9 267.9 1.89 ± 0.04

Benchmark Results: ERC20Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Transfer 246.9 ± 6.1 243.8 264.0 1.00 ± 0.03
main_levm_ERC20Transfer 401.8 ± 3.2 397.5 408.0 1.63 ± 0.02
pr_revm_ERC20Transfer 246.3 ± 1.8 244.0 249.2 1.00
pr_levm_ERC20Transfer 408.9 ± 4.3 404.8 417.3 1.66 ± 0.02

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Factorial 236.1 ± 1.3 234.2 237.9 1.00
main_levm_Factorial 456.9 ± 8.3 450.9 477.0 1.94 ± 0.04
pr_revm_Factorial 238.3 ± 1.8 236.3 241.3 1.01 ± 0.01
pr_levm_Factorial 461.6 ± 4.9 457.1 472.2 1.96 ± 0.02

Benchmark Results: FactorialRecursive

Command Mean [s] Min [s] Max [s] Relative
main_revm_FactorialRecursive 1.669 ± 0.039 1.572 1.715 1.00
main_levm_FactorialRecursive 2.727 ± 0.017 2.696 2.746 1.63 ± 0.04
pr_revm_FactorialRecursive 1.701 ± 0.026 1.660 1.738 1.02 ± 0.03
pr_levm_FactorialRecursive 2.790 ± 0.099 2.721 3.066 1.67 ± 0.07

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Fibonacci 207.4 ± 1.6 205.1 209.4 1.00
main_levm_Fibonacci 449.9 ± 3.0 446.6 457.2 2.17 ± 0.02
pr_revm_Fibonacci 208.8 ± 0.8 207.6 210.1 1.01 ± 0.01
pr_levm_Fibonacci 458.4 ± 1.7 456.8 462.4 2.21 ± 0.02

Benchmark Results: FibonacciRecursive

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_FibonacciRecursive 913.2 ± 10.9 893.4 930.5 1.00
main_levm_FibonacciRecursive 1413.2 ± 13.9 1395.1 1432.1 1.55 ± 0.02
pr_revm_FibonacciRecursive 923.1 ± 14.8 897.5 948.8 1.01 ± 0.02
pr_levm_FibonacciRecursive 1430.7 ± 12.5 1416.8 1458.6 1.57 ± 0.02

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ManyHashes 8.8 ± 0.1 8.7 8.9 1.01 ± 0.01
main_levm_ManyHashes 12.9 ± 0.2 12.8 13.3 1.48 ± 0.02
pr_revm_ManyHashes 8.8 ± 0.1 8.7 8.9 1.00
pr_levm_ManyHashes 13.7 ± 0.1 13.6 13.9 1.57 ± 0.02

Benchmark Results: MstoreBench

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_MstoreBench 269.0 ± 1.2 267.6 271.9 1.00
main_levm_MstoreBench 898.4 ± 3.6 893.1 902.1 3.34 ± 0.02
pr_revm_MstoreBench 270.3 ± 4.3 267.2 282.1 1.00 ± 0.02
pr_levm_MstoreBench 928.0 ± 8.0 922.6 949.9 3.45 ± 0.03

Benchmark Results: Push

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Push 295.5 ± 7.8 290.9 317.5 1.00 ± 0.03
main_levm_Push 1004.1 ± 11.1 997.5 1035.0 3.41 ± 0.07
pr_revm_Push 294.5 ± 4.7 291.6 307.4 1.00
pr_levm_Push 1028.8 ± 3.1 1024.8 1034.2 3.49 ± 0.06

Copy link

github-actions bot commented Jul 7, 2025

No significant difference was registered for any benchmark run.

Detailed Results

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
main_revm_BubbleSort 3.189 ± 0.018 3.173 3.231 1.00 ± 0.01
main_levm_BubbleSort 4.454 ± 0.039 4.420 4.549 1.40 ± 0.01
pr_revm_BubbleSort 3.175 ± 0.014 3.150 3.195 1.00
pr_levm_BubbleSort 4.502 ± 0.216 4.410 5.115 1.42 ± 0.07

Benchmark Results: ERC20Approval

Command Mean [s] Min [s] Max [s] Relative
main_revm_ERC20Approval 1.060 ± 0.012 1.049 1.080 1.00
main_levm_ERC20Approval 1.548 ± 0.034 1.516 1.627 1.46 ± 0.04
pr_revm_ERC20Approval 1.069 ± 0.015 1.058 1.099 1.01 ± 0.02
pr_levm_ERC20Approval 1.560 ± 0.029 1.535 1.625 1.47 ± 0.03

Benchmark Results: ERC20Mint

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Mint 139.2 ± 3.0 137.7 147.5 1.00
main_levm_ERC20Mint 258.6 ± 3.2 253.7 263.1 1.86 ± 0.05
pr_revm_ERC20Mint 140.9 ± 1.4 139.7 144.1 1.01 ± 0.02
pr_levm_ERC20Mint 264.0 ± 5.1 259.5 275.7 1.90 ± 0.05

Benchmark Results: ERC20Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Transfer 247.7 ± 6.1 243.4 259.8 1.00 ± 0.03
main_levm_ERC20Transfer 409.4 ± 18.4 399.0 461.1 1.66 ± 0.08
pr_revm_ERC20Transfer 246.5 ± 2.5 244.1 251.8 1.00
pr_levm_ERC20Transfer 409.5 ± 5.6 405.5 424.8 1.66 ± 0.03

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Factorial 237.5 ± 0.9 236.4 239.2 1.00
main_levm_Factorial 460.6 ± 7.0 454.5 478.7 1.94 ± 0.03
pr_revm_Factorial 237.9 ± 4.0 235.6 248.8 1.00 ± 0.02
pr_levm_Factorial 463.4 ± 6.5 457.5 478.4 1.95 ± 0.03

Benchmark Results: FactorialRecursive

Command Mean [s] Min [s] Max [s] Relative
main_revm_FactorialRecursive 1.685 ± 0.027 1.642 1.731 1.00
main_levm_FactorialRecursive 2.681 ± 0.022 2.654 2.734 1.59 ± 0.03
pr_revm_FactorialRecursive 1.696 ± 0.025 1.647 1.728 1.01 ± 0.02
pr_levm_FactorialRecursive 2.831 ± 0.025 2.792 2.866 1.68 ± 0.03

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Fibonacci 207.6 ± 0.7 206.4 208.9 1.00
main_levm_Fibonacci 455.9 ± 19.8 445.5 511.5 2.20 ± 0.10
pr_revm_Fibonacci 209.1 ± 0.8 208.0 210.5 1.01 ± 0.01
pr_levm_Fibonacci 457.8 ± 5.9 444.4 467.0 2.21 ± 0.03

Benchmark Results: FibonacciRecursive

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_FibonacciRecursive 924.8 ± 11.6 901.2 941.6 1.00 ± 0.02
main_levm_FibonacciRecursive 1417.7 ± 11.7 1404.6 1445.5 1.54 ± 0.03
pr_revm_FibonacciRecursive 921.0 ± 15.6 903.3 954.9 1.00
pr_levm_FibonacciRecursive 1470.3 ± 8.5 1461.2 1489.9 1.60 ± 0.03

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ManyHashes 8.8 ± 0.0 8.8 8.9 1.01 ± 0.01
main_levm_ManyHashes 13.2 ± 0.2 13.0 13.5 1.50 ± 0.02
pr_revm_ManyHashes 8.7 ± 0.1 8.6 8.8 1.00
pr_levm_ManyHashes 13.9 ± 0.5 13.6 15.3 1.59 ± 0.06

Benchmark Results: MstoreBench

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_MstoreBench 279.8 ± 3.1 275.3 283.7 1.01 ± 0.02
main_levm_MstoreBench 939.9 ± 2.2 936.0 942.9 3.39 ± 0.05
pr_revm_MstoreBench 277.1 ± 4.2 271.6 282.8 1.00
pr_levm_MstoreBench 977.6 ± 9.7 952.2 985.8 3.53 ± 0.06

Benchmark Results: Push

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Push 294.8 ± 1.5 291.3 296.7 1.00
main_levm_Push 1022.9 ± 12.8 1016.7 1059.0 3.47 ± 0.05
pr_revm_Push 295.6 ± 2.3 292.7 299.6 1.00 ± 0.01
pr_levm_Push 1093.4 ± 6.3 1086.2 1107.8 3.71 ± 0.03

@edg-l edg-l changed the title perf(levm): codecopy perf(levm): improve codecopy Jul 7, 2025
Copy link

github-actions bot commented Jul 7, 2025

Benchmark for dd282c1

Click to view benchmark
Test Base PR %
block payload building bench 0.2±0.00ns 0.2±0.00ns 0.00%

Copy link

github-actions bot commented Jul 7, 2025

Benchmark for e66bc58

Click to view benchmark
Test Base PR %
block payload building bench 0.2±0.00ns 0.2±0.00ns 0.00%

Copy link

github-actions bot commented Jul 7, 2025

Benchmark for 48e0e71

Click to view benchmark
Test Base PR %
block payload building bench 0.2±0.00ns 0.2±0.00ns 0.00%

Copy link

github-actions bot commented Jul 7, 2025

No significant difference was registered for any benchmark run.

Detailed Results

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
main_revm_BubbleSort 3.176 ± 0.016 3.155 3.212 1.00
main_levm_BubbleSort 4.399 ± 0.028 4.366 4.441 1.39 ± 0.01
pr_revm_BubbleSort 3.202 ± 0.016 3.172 3.234 1.01 ± 0.01
pr_levm_BubbleSort 4.422 ± 0.035 4.369 4.475 1.39 ± 0.01

Benchmark Results: ERC20Approval

Command Mean [s] Min [s] Max [s] Relative
main_revm_ERC20Approval 1.042 ± 0.007 1.029 1.052 1.00
main_levm_ERC20Approval 1.508 ± 0.007 1.501 1.526 1.45 ± 0.01
pr_revm_ERC20Approval 1.043 ± 0.009 1.036 1.062 1.00 ± 0.01
pr_levm_ERC20Approval 1.525 ± 0.008 1.515 1.539 1.46 ± 0.01

Benchmark Results: ERC20Mint

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Mint 137.3 ± 0.5 136.7 138.0 1.00
main_levm_ERC20Mint 253.1 ± 3.0 249.6 260.0 1.84 ± 0.02
pr_revm_ERC20Mint 138.6 ± 0.7 137.2 139.6 1.01 ± 0.01
pr_levm_ERC20Mint 252.2 ± 2.3 250.0 257.2 1.84 ± 0.02

Benchmark Results: ERC20Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Transfer 240.0 ± 1.9 238.3 244.3 1.00
main_levm_ERC20Transfer 394.2 ± 2.0 391.6 398.7 1.64 ± 0.02
pr_revm_ERC20Transfer 243.4 ± 1.5 241.7 246.4 1.01 ± 0.01
pr_levm_ERC20Transfer 400.5 ± 2.4 397.5 404.1 1.67 ± 0.02

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Factorial 235.3 ± 3.3 232.4 241.6 1.00 ± 0.02
main_levm_Factorial 444.4 ± 9.7 439.1 470.2 1.90 ± 0.05
pr_revm_Factorial 234.2 ± 2.2 232.4 238.8 1.00
pr_levm_Factorial 446.7 ± 1.6 444.5 450.1 1.91 ± 0.02

Benchmark Results: FactorialRecursive

Command Mean [s] Min [s] Max [s] Relative
main_revm_FactorialRecursive 1.645 ± 0.047 1.573 1.717 1.00
main_levm_FactorialRecursive 2.635 ± 0.010 2.619 2.655 1.60 ± 0.05
pr_revm_FactorialRecursive 1.650 ± 0.024 1.598 1.679 1.00 ± 0.03
pr_levm_FactorialRecursive 2.719 ± 0.020 2.698 2.763 1.65 ± 0.05

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Fibonacci 208.2 ± 3.9 206.0 219.0 1.00 ± 0.02
main_levm_Fibonacci 437.3 ± 3.0 433.8 444.4 2.11 ± 0.04
pr_revm_Fibonacci 207.6 ± 3.3 205.8 217.0 1.00
pr_levm_Fibonacci 447.4 ± 9.1 442.2 472.9 2.15 ± 0.06

Benchmark Results: FibonacciRecursive

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_FibonacciRecursive 887.7 ± 13.6 856.2 905.2 1.00
main_levm_FibonacciRecursive 1389.3 ± 14.6 1375.0 1420.8 1.56 ± 0.03
pr_revm_FibonacciRecursive 889.8 ± 4.8 881.9 898.4 1.00 ± 0.02
pr_levm_FibonacciRecursive 1415.9 ± 7.5 1407.6 1428.9 1.59 ± 0.03

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ManyHashes 8.9 ± 0.1 8.8 9.0 1.00
main_levm_ManyHashes 13.2 ± 0.1 13.1 13.4 1.49 ± 0.02
pr_revm_ManyHashes 9.0 ± 0.1 8.9 9.2 1.02 ± 0.01
pr_levm_ManyHashes 13.9 ± 0.3 13.7 14.6 1.56 ± 0.03

Benchmark Results: MstoreBench

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_MstoreBench 271.1 ± 6.0 265.9 284.8 1.01 ± 0.02
main_levm_MstoreBench 933.1 ± 10.3 926.9 961.8 3.49 ± 0.04
pr_revm_MstoreBench 267.6 ± 1.5 266.3 270.8 1.00
pr_levm_MstoreBench 950.4 ± 16.7 935.9 980.3 3.55 ± 0.07

Benchmark Results: Push

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Push 298.0 ± 1.0 296.8 299.9 1.00
main_levm_Push 1034.2 ± 7.0 1029.3 1049.1 3.47 ± 0.03
pr_revm_Push 299.0 ± 6.9 294.9 318.5 1.00 ± 0.02
pr_levm_Push 1003.3 ± 2.4 999.3 1007.1 3.37 ± 0.01

Copy link

github-actions bot commented Jul 7, 2025

Benchmark for b942cad

Click to view benchmark
Test Base PR %
block payload building bench 0.2±0.00ns 0.2±0.00ns 0.00%

Copy link

github-actions bot commented Jul 8, 2025

No significant difference was registered for any benchmark run.

Detailed Results

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
main_revm_BubbleSort 3.183 ± 0.071 3.152 3.384 1.00
main_levm_BubbleSort 4.409 ± 0.023 4.384 4.452 1.39 ± 0.03
pr_revm_BubbleSort 3.210 ± 0.027 3.175 3.263 1.01 ± 0.02
pr_levm_BubbleSort 4.397 ± 0.020 4.361 4.424 1.38 ± 0.03

Benchmark Results: ERC20Approval

Command Mean [s] Min [s] Max [s] Relative
main_revm_ERC20Approval 1.027 ± 0.007 1.020 1.040 1.00
main_levm_ERC20Approval 1.536 ± 0.003 1.530 1.539 1.50 ± 0.01
pr_revm_ERC20Approval 1.036 ± 0.004 1.033 1.046 1.01 ± 0.01
pr_levm_ERC20Approval 1.513 ± 0.007 1.503 1.523 1.47 ± 0.01

Benchmark Results: ERC20Mint

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Mint 137.0 ± 1.0 136.0 139.5 1.00
main_levm_ERC20Mint 254.7 ± 3.4 251.1 262.5 1.86 ± 0.03
pr_revm_ERC20Mint 138.3 ± 0.5 137.4 138.9 1.01 ± 0.01
pr_levm_ERC20Mint 252.2 ± 2.2 249.9 258.0 1.84 ± 0.02

Benchmark Results: ERC20Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Transfer 240.9 ± 3.0 238.2 246.3 1.00
main_levm_ERC20Transfer 400.7 ± 5.3 396.9 415.3 1.66 ± 0.03
pr_revm_ERC20Transfer 243.5 ± 6.3 240.0 259.7 1.01 ± 0.03
pr_levm_ERC20Transfer 401.5 ± 12.5 394.5 436.4 1.67 ± 0.06

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Factorial 234.0 ± 2.5 232.0 240.3 1.00 ± 0.01
main_levm_Factorial 443.3 ± 4.4 439.6 454.9 1.90 ± 0.03
pr_revm_Factorial 233.2 ± 2.2 230.9 239.3 1.00
pr_levm_Factorial 446.0 ± 1.2 444.4 448.0 1.91 ± 0.02

Benchmark Results: FactorialRecursive

Command Mean [s] Min [s] Max [s] Relative
main_revm_FactorialRecursive 1.641 ± 0.013 1.622 1.664 1.03 ± 0.06
main_levm_FactorialRecursive 2.647 ± 0.021 2.630 2.697 1.66 ± 0.10
pr_revm_FactorialRecursive 1.593 ± 0.093 1.349 1.651 1.00
pr_levm_FactorialRecursive 2.687 ± 0.041 2.647 2.795 1.69 ± 0.10

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Fibonacci 207.6 ± 4.5 202.6 219.1 1.00
main_levm_Fibonacci 437.1 ± 4.2 428.2 443.2 2.11 ± 0.05
pr_revm_Fibonacci 208.8 ± 4.5 204.2 217.6 1.01 ± 0.03
pr_levm_Fibonacci 445.1 ± 3.8 442.2 455.3 2.14 ± 0.05

Benchmark Results: FibonacciRecursive

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_FibonacciRecursive 888.9 ± 6.1 877.6 895.4 1.02 ± 0.01
main_levm_FibonacciRecursive 1394.7 ± 18.9 1380.5 1444.2 1.60 ± 0.02
pr_revm_FibonacciRecursive 871.8 ± 5.6 863.5 883.6 1.00
pr_levm_FibonacciRecursive 1435.7 ± 16.7 1419.2 1466.0 1.65 ± 0.02

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ManyHashes 8.9 ± 0.1 8.8 8.9 1.02 ± 0.01
main_levm_ManyHashes 14.0 ± 0.4 13.4 14.7 1.61 ± 0.05
pr_revm_ManyHashes 8.7 ± 0.1 8.6 8.9 1.00
pr_levm_ManyHashes 13.2 ± 0.2 13.0 13.6 1.52 ± 0.03

Benchmark Results: MstoreBench

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_MstoreBench 271.5 ± 4.1 268.9 282.7 1.01 ± 0.02
main_levm_MstoreBench 930.0 ± 3.2 926.9 936.7 3.46 ± 0.03
pr_revm_MstoreBench 268.7 ± 2.3 266.3 273.6 1.00
pr_levm_MstoreBench 899.0 ± 4.8 893.3 910.8 3.35 ± 0.03

Benchmark Results: Push

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Push 304.9 ± 5.5 300.6 316.0 1.02 ± 0.02
main_levm_Push 1045.5 ± 40.2 1029.2 1159.5 3.51 ± 0.14
pr_revm_Push 298.2 ± 2.3 296.5 304.4 1.00
pr_levm_Push 1000.0 ± 12.5 992.7 1034.6 3.35 ± 0.05

Copy link

github-actions bot commented Jul 8, 2025

Benchmark for c87d8fe

Click to view benchmark
Test Base PR %
block payload building bench 0.2±0.00ns 0.2±0.00ns 0.00%

@mpaulucci mpaulucci removed this from ethrex_l1 Jul 8, 2025
Copy link

No significant difference was registered for any benchmark run.

Detailed Results

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
main_revm_BubbleSort 3.214 ± 0.010 3.203 3.233 1.01 ± 0.01
main_levm_BubbleSort 4.446 ± 0.089 4.397 4.693 1.39 ± 0.03
pr_revm_BubbleSort 3.197 ± 0.022 3.173 3.238 1.00
pr_levm_BubbleSort 4.557 ± 0.107 4.472 4.779 1.43 ± 0.03

Benchmark Results: ERC20Approval

Command Mean [s] Min [s] Max [s] Relative
main_revm_ERC20Approval 1.032 ± 0.013 1.022 1.064 1.00
main_levm_ERC20Approval 1.523 ± 0.008 1.512 1.540 1.48 ± 0.02
pr_revm_ERC20Approval 1.059 ± 0.007 1.049 1.077 1.03 ± 0.01
pr_levm_ERC20Approval 1.536 ± 0.014 1.521 1.566 1.49 ± 0.02

Benchmark Results: ERC20Mint

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Mint 136.5 ± 0.4 135.9 137.1 1.00
main_levm_ERC20Mint 248.3 ± 1.8 245.6 251.6 1.82 ± 0.01
pr_revm_ERC20Mint 139.2 ± 2.2 137.5 144.1 1.02 ± 0.02
pr_levm_ERC20Mint 256.1 ± 4.8 248.3 262.7 1.88 ± 0.04

Benchmark Results: ERC20Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Transfer 240.8 ± 2.6 238.4 244.8 1.00
main_levm_ERC20Transfer 391.2 ± 2.7 388.5 396.3 1.62 ± 0.02
pr_revm_ERC20Transfer 244.1 ± 0.7 243.1 245.5 1.01 ± 0.01
pr_levm_ERC20Transfer 393.6 ± 3.6 389.7 402.2 1.63 ± 0.02

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Factorial 232.7 ± 0.6 232.1 233.9 1.00 ± 0.01
main_levm_Factorial 493.1 ± 26.2 473.7 532.0 2.12 ± 0.11
pr_revm_Factorial 232.0 ± 1.3 229.0 234.0 1.00
pr_levm_Factorial 482.0 ± 18.1 475.2 533.4 2.08 ± 0.08

Benchmark Results: FactorialRecursive

Command Mean [s] Min [s] Max [s] Relative
main_revm_FactorialRecursive 1.636 ± 0.023 1.585 1.661 1.00
main_levm_FactorialRecursive 2.895 ± 0.216 2.770 3.484 1.77 ± 0.13
pr_revm_FactorialRecursive 1.666 ± 0.022 1.615 1.685 1.02 ± 0.02
pr_levm_FactorialRecursive 2.927 ± 0.076 2.838 3.020 1.79 ± 0.05

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Fibonacci 207.3 ± 1.0 205.6 208.7 1.00
main_levm_Fibonacci 465.5 ± 7.0 461.7 484.7 2.25 ± 0.04
pr_revm_Fibonacci 207.9 ± 1.2 204.6 209.2 1.00 ± 0.01
pr_levm_Fibonacci 467.9 ± 6.6 464.3 486.4 2.26 ± 0.03

Benchmark Results: FibonacciRecursive

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_FibonacciRecursive 880.7 ± 15.6 851.5 909.0 1.00 ± 0.02
main_levm_FibonacciRecursive 1501.5 ± 36.8 1460.7 1548.2 1.71 ± 0.04
pr_revm_FibonacciRecursive 879.8 ± 4.2 873.8 885.9 1.00
pr_levm_FibonacciRecursive 1528.2 ± 41.7 1492.9 1617.0 1.74 ± 0.05

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ManyHashes 8.8 ± 0.1 8.7 8.9 1.00
main_levm_ManyHashes 13.4 ± 0.2 13.2 14.0 1.52 ± 0.03
pr_revm_ManyHashes 8.9 ± 0.1 8.8 9.0 1.01 ± 0.01
pr_levm_ManyHashes 14.2 ± 0.2 14.0 14.8 1.61 ± 0.03

Benchmark Results: MstoreBench

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_MstoreBench 268.4 ± 2.5 265.9 274.2 1.00
main_levm_MstoreBench 967.4 ± 4.0 961.1 972.4 3.60 ± 0.04
pr_revm_MstoreBench 269.0 ± 2.6 267.0 275.4 1.00 ± 0.01
pr_levm_MstoreBench 970.0 ± 2.6 963.6 972.7 3.61 ± 0.03

Benchmark Results: Push

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Push 297.8 ± 0.4 297.0 298.7 1.00
main_levm_Push 1092.5 ± 32.5 1074.7 1183.4 3.67 ± 0.11
pr_revm_Push 298.4 ± 1.4 297.0 301.3 1.00 ± 0.00
pr_levm_Push 1074.9 ± 6.5 1065.5 1085.0 3.61 ± 0.02

Copy link

Benchmark for 6175b89

Click to view benchmark
Test Base PR %
block payload building bench 0.2±0.00ns 0.2±0.00ns 0.00%

Copy link

No significant difference was registered for any benchmark run.

Detailed Results

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
main_revm_BubbleSort 3.186 ± 0.022 3.166 3.245 1.00
main_levm_BubbleSort 4.456 ± 0.066 4.404 4.593 1.40 ± 0.02
pr_revm_BubbleSort 3.210 ± 0.019 3.176 3.237 1.01 ± 0.01
pr_levm_BubbleSort 4.534 ± 0.080 4.467 4.678 1.42 ± 0.03

Benchmark Results: ERC20Approval

Command Mean [s] Min [s] Max [s] Relative
main_revm_ERC20Approval 1.059 ± 0.016 1.043 1.097 1.02 ± 0.02
main_levm_ERC20Approval 1.563 ± 0.060 1.536 1.732 1.51 ± 0.06
pr_revm_ERC20Approval 1.037 ± 0.011 1.026 1.059 1.00
pr_levm_ERC20Approval 1.518 ± 0.004 1.513 1.525 1.46 ± 0.02

Benchmark Results: ERC20Mint

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Mint 139.8 ± 0.6 138.9 140.8 1.02 ± 0.01
main_levm_ERC20Mint 257.1 ± 18.1 249.4 308.6 1.87 ± 0.13
pr_revm_ERC20Mint 137.7 ± 1.9 136.5 143.1 1.00
pr_levm_ERC20Mint 247.7 ± 2.4 243.9 252.0 1.80 ± 0.03

Benchmark Results: ERC20Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Transfer 244.2 ± 0.7 243.5 245.4 1.01 ± 0.01
main_levm_ERC20Transfer 402.2 ± 7.2 394.1 416.7 1.66 ± 0.04
pr_revm_ERC20Transfer 241.9 ± 2.8 239.4 247.7 1.00
pr_levm_ERC20Transfer 391.9 ± 8.2 386.7 414.3 1.62 ± 0.04

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Factorial 232.6 ± 1.2 229.5 234.2 1.00 ± 0.01
main_levm_Factorial 492.8 ± 27.3 475.2 533.6 2.12 ± 0.12
pr_revm_Factorial 232.0 ± 0.3 231.6 232.5 1.00
pr_levm_Factorial 495.6 ± 26.0 475.6 535.0 2.14 ± 0.11

Benchmark Results: FactorialRecursive

Command Mean [s] Min [s] Max [s] Relative
main_revm_FactorialRecursive 1.650 ± 0.012 1.627 1.667 1.00
main_levm_FactorialRecursive 2.886 ± 0.087 2.806 3.039 1.75 ± 0.05
pr_revm_FactorialRecursive 1.659 ± 0.021 1.608 1.681 1.01 ± 0.01
pr_levm_FactorialRecursive 2.849 ± 0.056 2.796 2.984 1.73 ± 0.04

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Fibonacci 206.8 ± 0.6 206.2 208.1 1.00
main_levm_Fibonacci 467.7 ± 3.3 463.4 473.7 2.26 ± 0.02
pr_revm_Fibonacci 208.1 ± 1.2 207.2 211.5 1.01 ± 0.01
pr_levm_Fibonacci 466.1 ± 5.5 459.0 476.3 2.25 ± 0.03

Benchmark Results: FibonacciRecursive

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_FibonacciRecursive 887.5 ± 7.2 873.8 900.4 1.00
main_levm_FibonacciRecursive 1480.5 ± 33.9 1450.9 1549.4 1.67 ± 0.04
pr_revm_FibonacciRecursive 888.9 ± 12.5 858.8 904.8 1.00 ± 0.02
pr_levm_FibonacciRecursive 1508.9 ± 50.0 1465.2 1575.7 1.70 ± 0.06

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ManyHashes 8.7 ± 0.1 8.7 9.0 1.01 ± 0.01
main_levm_ManyHashes 14.0 ± 1.8 13.2 19.1 1.61 ± 0.21
pr_revm_ManyHashes 8.7 ± 0.1 8.6 8.8 1.00
pr_levm_ManyHashes 13.2 ± 0.2 13.0 13.8 1.52 ± 0.03

Benchmark Results: MstoreBench

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_MstoreBench 271.5 ± 4.4 266.7 279.0 1.01 ± 0.02
main_levm_MstoreBench 944.9 ± 3.7 939.3 950.3 3.53 ± 0.02
pr_revm_MstoreBench 267.6 ± 1.3 265.9 269.5 1.00
pr_levm_MstoreBench 967.3 ± 3.7 960.3 973.3 3.61 ± 0.02

Benchmark Results: Push

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Push 297.5 ± 1.2 295.2 299.3 1.00
main_levm_Push 1061.4 ± 3.2 1057.0 1066.2 3.57 ± 0.02
pr_revm_Push 300.2 ± 2.4 297.2 304.0 1.01 ± 0.01
pr_levm_Push 1076.3 ± 6.2 1070.3 1085.5 3.62 ± 0.03

Copy link

Benchmark for 57c3602

Click to view benchmark
Test Base PR %
block payload building bench 0.2±0.00ns 0.2±0.00ns 0.00%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
levm Lambda EVM implementation performance
Projects
Status: In review
Development

Successfully merging this pull request may close these issues.

4 participants