ewasm / benchmarking

Instructions for benchmarking Ewasm precompiles. (And results.)
Apache License 2.0
18 stars 9 forks source link

Benchmarks

This repository contains instructions for benchmarking evm implementations, ewasm contracts and standalone wasm modules. Directory descriptions follow.

evm/            - contains benchmarks for different evm implementations (geth, parity, cita-vm, evmone)
ewasm/          - contains benchmarks and tests for ewasm contracts in ewasm engines.
wasm/           - contains benchmarks for wasm modules in standalone wasm engines.
wasm-engines/   - contains benchmarks for wasm modules comparing wasm engines.

EVM

Directory /evm contains a list of the current benchmarked evm implementations:

evm/
  cita-vm/
  evmone/
  geth/
  parity/

Build each one of the evm implementations:

$ make build_evm_engines

Run EVM benchmarks:

$ make benchmark_evm_engines

The previous command will create a new directory evmraceresults, containing the following files:

evm_benchmarks.csv         - consolidated benchmarks
evm_benchmarks_evmone.csv  - evmone benchmarks
evm_benchmarks_parity.csv  - parity benchmarks
evm_benchmarks_geth.csv    - geth benchmarks
evm_benchmarks_cita-vm.csv - cita vm benchmarks

Run precompiles benchmarks:

$ cd evm
$ ./scripts/run_precompiles_bench.py geth 

Wasm Engines Benchmarks

Build the docker image:

$ make build_wasm_engines

Build the wasm binaries and execute benchmarks:

$ cd wasm-engines && ./run_benchmarks.sh

Scout Benchmarks

Build the docker image:

$ make build_scout_engines

Run benchmarks

make benchmark_scout_engines

Generate charts

Install python deps for plotting benchmark graphs:

$ pip install -r requirements.txt
$ make generate_charts

EVM engine versions

WebAssembly engine versions