-
Notifications
You must be signed in to change notification settings - Fork 142
feat(core): integrate pevm #2279
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
Conversation
Lines of code reportTotal lines added: Detailed view |
| "serde", | ||
| ], package = "revm" } | ||
| # global-alloc makes it a 25% faster approx but it might crash in arm system | ||
| pevm = { git = "https://github.com/MarcosNicolau/pevm.git", branch = "main", features = ["global-alloc"]} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note: I had to fork pevm library to support other chains, we should try consider opening a pr to the oficial pevm repo or fork own ourselves. Here you can see the diff: (MarcosNicolau/pevm@5d175d1).
272be84 to
b9364bd
Compare
Benchmark Block Execution Results Comparison Against Main
|
|
Closing, we'll redo this using the updated EVM abstraction |
Motivation
Increase performance.
Description
Implements parallel execution with
pevmforrevmvm engine. A load execution bench with 10 blocks of 1_000_000_000 gas (~47 transactions per block) composed of random raw transfers between 1 million wallets throw an increase in 1.8x on an macbook M4 pro (the sequential execution took 23s and parallel 13s).Here are the respective flamegraphs:
We should do more load tests with ERC-20 and Uniswap swaps and see the gain in those cases. As stated here by pevm, we should see an increase of around:
Considerations
snmallocfor memory allocation, for which CMAKE is necessary, so it was added to the Dockefiles and workflows.References
Closes #2264