Skip to content

refactor(levm): move restore_cache_state() to gen_db.rs #2734

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 3 commits into
base: main
Choose a base branch
from

Conversation

DiegoCivi
Copy link
Contributor

@DiegoCivi DiegoCivi commented May 9, 2025

Motivation

Declutter vm.rs

Description

The function restore_cache_state() was moved to gen_db.rs where it makes more sense.

Closes #2728

Copy link

github-actions bot commented May 9, 2025

Lines of code report

Total lines added: 21
Total lines removed: 17
Total lines changed: 38

Detailed view
+----------------------------------------+-------+------+
| File                                   | Lines | Diff |
+----------------------------------------+-------+------+
| ethrex/crates/vm/levm/src/db/gen_db.rs | 221   | +21  |
+----------------------------------------+-------+------+
| ethrex/crates/vm/levm/src/vm.rs        | 409   | -17  |
+----------------------------------------+-------+------+

Copy link

github-actions bot commented May 9, 2025

Benchmark Results Comparison

PR Results

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
revm_Factorial 246.1 ± 6.6 241.1 259.1 1.00
levm_Factorial 825.5 ± 7.1 816.4 838.3 3.35 ± 0.09

Benchmark Results: Factorial - Recursive

Command Mean [s] Min [s] Max [s] Relative
revm_FactorialRecursive 1.554 ± 0.095 1.434 1.683 1.00
levm_FactorialRecursive 12.956 ± 0.087 12.887 13.182 8.33 ± 0.51

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
revm_Fibonacci 215.2 ± 0.6 214.4 216.3 1.00
levm_Fibonacci 821.8 ± 8.0 812.6 836.4 3.82 ± 0.04

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
revm_ManyHashes 8.8 ± 0.0 8.7 8.9 1.00
levm_ManyHashes 17.1 ± 0.1 17.0 17.3 1.95 ± 0.01

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
revm_BubbleSort 3.261 ± 0.016 3.239 3.282 1.00
levm_BubbleSort 5.599 ± 0.197 5.497 6.154 1.72 ± 0.06

Benchmark Results: ERC20 - Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
revm_ERC20Transfer 251.1 ± 4.1 248.6 262.0 1.00
levm_ERC20Transfer 502.8 ± 4.6 497.5 509.5 2.00 ± 0.04

Benchmark Results: ERC20 - Mint

Command Mean [ms] Min [ms] Max [ms] Relative
revm_ERC20Mint 142.6 ± 0.7 141.6 144.1 1.00
levm_ERC20Mint 325.6 ± 2.6 321.8 330.1 2.28 ± 0.02

Benchmark Results: ERC20 - Approval

Command Mean [s] Min [s] Max [s] Relative
revm_ERC20Approval 1.031 ± 0.002 1.028 1.033 1.00
levm_ERC20Approval 1.901 ± 0.021 1.875 1.942 1.84 ± 0.02

Main Results

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
revm_Factorial 240.7 ± 0.6 239.7 241.6 1.00
levm_Factorial 829.2 ± 6.6 820.8 841.6 3.44 ± 0.03

Benchmark Results: Factorial - Recursive

Command Mean [s] Min [s] Max [s] Relative
revm_FactorialRecursive 1.485 ± 0.070 1.416 1.604 1.00
levm_FactorialRecursive 13.028 ± 0.046 12.945 13.086 8.77 ± 0.42

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
revm_Fibonacci 213.9 ± 5.5 210.1 228.9 1.00
levm_Fibonacci 844.7 ± 33.3 823.4 937.7 3.95 ± 0.19

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
revm_ManyHashes 8.8 ± 0.0 8.7 8.9 1.00
levm_ManyHashes 17.2 ± 0.2 16.9 17.6 1.96 ± 0.03

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
revm_BubbleSort 3.231 ± 0.017 3.214 3.265 1.00
levm_BubbleSort 5.572 ± 0.046 5.523 5.685 1.72 ± 0.02

Benchmark Results: ERC20 - Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
revm_ERC20Transfer 252.5 ± 4.2 248.5 262.2 1.00
levm_ERC20Transfer 498.3 ± 3.1 495.3 506.3 1.97 ± 0.03

Benchmark Results: ERC20 - Mint

Command Mean [ms] Min [ms] Max [ms] Relative
revm_ERC20Mint 142.3 ± 1.1 141.2 145.0 1.00
levm_ERC20Mint 322.0 ± 2.0 319.6 325.6 2.26 ± 0.02

Benchmark Results: ERC20 - Approval

Command Mean [s] Min [s] Max [s] Relative
revm_ERC20Approval 1.045 ± 0.013 1.031 1.070 1.00
levm_ERC20Approval 1.881 ± 0.004 1.873 1.887 1.80 ± 0.02

@DiegoCivi DiegoCivi marked this pull request as ready for review May 9, 2025 21:45
@DiegoCivi DiegoCivi requested a review from a team as a code owner May 9, 2025 21:45
@JereSalo
Copy link
Contributor

Maybe we could handle everything related to callframe backups in callframe.rs because gen_db.rs in itself is going to big enough so if we can remove some things from there it would be great.
I'd also move there merge_call_frame_backup_with_parent() and those kinds of functions maybe.
Main reason is that gen_db.rs is going to have an addition soon (It's being worked on this PR)

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.

Move restore_cache_state to call_frame
2 participants