Skip to content
This repository was archived by the owner on Oct 31, 2024. It is now read-only.
This repository was archived by the owner on Oct 31, 2024. It is now read-only.

Performance Improvements Strategy & Tracking Issue #64

@holgerd77

Description

@holgerd77

This issue is to keep track of the ongoing activities around improving the performance of the various EthereumJS libraries - especially the VM - and serve as a general entry point to the topic.

Focus

Improvement Targets

The following library parts are especially suited for performance improvement work (feel free to add):

Library Improvement Ideas Tracking Issue
VM Execution, Cache Improvements (StateManager), Stack & Memory Management, Precompiles  ethereumjs/ethereumjs-monorepo#865
Merkle Patricia Tree Checkpointing, Storage Backend, Tree Search, Cache Improvements (Tree Search, Storage) https://github.com/ethereumjs/merkle-patricia-tree/issues/132
Ethash Overall Execution
Util Hashing, Signatures
RLP  Encoding / decoding, highly used in e.g. MPT

Improvement Areas

Possible improvements areas:

  • Algorithmic Improvements on performance sensitive code parts (iteration strategy, data structures,...)
  • More sophisticated caching
    • Cache Structure & Setup (what to store? how long to store? where to store?)
    • Cache Application (when to use? when to flush?)
  • Storage Backends
  • Build Improvements (build target, dependencies, compiler flags,...)
  • Environment & Language (WASM)

Benchmarks / Tooling

Performance Measurement Setups

Helpful setups for performance analysis:

  • Dedicated benchmarking tool
  • CI Runs
  • Behaviour (optimally on reproducible tasks) in a productive environment (e.g. the VM within Buidler)

Benchmark Tooling

Helpful JavaScript/CI Tooling:

Progress Tracking

It would be nice if we collect some comprehensive results on progress being made over time here.

Note: this can be challenging if the benchmarking suite evolves/changes significantly over time. We'll see.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions