Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ziyadedher/evm-bench
🚀🪑 evm-bench is a suite of Ethereum Virtual Machine stress tests and benchmarks.
https://github.com/ziyadedher/evm-bench
benchmark benchmark-framework ethereum ethereum-contract evm evm-bytecode smart-contracts
Last synced: 1 day ago
JSON representation
🚀🪑 evm-bench is a suite of Ethereum Virtual Machine stress tests and benchmarks.
- Host: GitHub
- URL: https://github.com/ziyadedher/evm-bench
- Owner: ziyadedher
- License: gpl-3.0
- Created: 2022-10-09T16:54:09.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-14T08:05:18.000Z (6 months ago)
- Last Synced: 2024-05-14T09:28:04.585Z (6 months ago)
- Topics: benchmark, benchmark-framework, ethereum, ethereum-contract, evm, evm-bytecode, smart-contracts
- Language: Solidity
- Homepage:
- Size: 1.99 MB
- Stars: 190
- Watchers: 3
- Forks: 16
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# evm-bench
[![Rust](https://github.com/ziyadedher/evm-bench/actions/workflows/rust.yml/badge.svg)](https://github.com/ziyadedher/evm-bench/actions/workflows/rust.yml)
**evm-bench is a suite of Ethereum Virtual Machine (EVM) stress tests and benchmarks.**
evm-bench makes it easy to compare EVM performance in a scalable, standardized, and portable way.
| | evmone | revm | pyrevm | geth | py-evm.pypy | py-evm.cpython | ethereumjs |
| ----------------------- | ------ | ------ | ------ | ------ | ----------- | -------------- | ---------- |
| **sum** | 66ms | 84.8ms | 194ms | 235ms | 7.201s | 19.0886s | 146.3218s |
| **relative** | 1.000x | 1.285x | 2.939x | 3.561x | 109.106x | 289.221x | 2216.997x |
| | | | | | | | |
| erc20.approval-transfer | 7ms | 9.6ms | 16.2ms | 17ms | 425.2ms | 1.13s | 2.0006s |
| erc20.mint | 5ms | 6.4ms | 14.8ms | 17.2ms | 334ms | 1.1554s | 3.1352s |
| erc20.transfer | 8.6ms | 11.6ms | 22.8ms | 24.6ms | 449.2ms | 1.6172s | 3.6564s |
| snailtracer | 43ms | 53ms | 128ms | 163ms | 5.664s | 13.675s | 135.059s |
| ten-thousand-hashes | 2.4ms | 4.2ms | 12.2ms | 13.2ms | 328.6ms | 1.511s | 2.4706s |To reproduce these results, check out [usage with the evm-bench suite below](#with-the-evm-bench-suite).
## Technical Overview
In evm-bench there are [benchmarks](/benchmarks) and [runners](/runners):
- [Benchmarks](/benchmarks) are expensive Solidity contracts paired with configuration.
- [Runners](/runners) are consistent platforms for deploying and calling arbitrary smart contracts.The evm-bench framework can run any benchmark on any runner. The links above dive deeper into how to build new benchmarks or runners.
## Usage
### With the evm-bench suite
Simply cloning this repository and running `RUST_LOG=info cargo run --release --` will do the trick. You may need to install some dependencies for the benchmark build process and the runner execution.
### With another suite
evm-bench is meant to be used with the pre-developed suite of benchmarks and runners in this repository. However, it should work as an independent framework elsewhere.
See the CLI arguments for evm-bench to figure out how to set it up! Alternatively just reach out to me or post an issue.
## Development
Do it. Reach out to me if you wanna lend a hand but don't know where to start!