Performance Optimizations
See original GitHub issueWhat is wrong?
There is rudamentary full sync code in place and with that, we’re finding performance issues.
The link above is the cProfile
output which can be loaded using the pstats
standard library module to see where time is spent.
Known “low hanging fruit”
The following things are where we’re seeing the most time spent which can likely be optimized.
- Remove support for python 2 from
pyrlp
- Further
pyrlp
optimizations - Caching of the
VMState.prev_hashes
generation.
Ways to make things faster
Cython looks to be a very promising way for us to do certain optimizations. We should spend a little time doing discovery to see how this well this works and what kind of performance gains we can get.
Issue Analytics
- State:
- Created 5 years ago
- Comments:14 (8 by maintainers)
Top Results From Across the Web
Performance Optimization - an overview | ScienceDirect Topics
Performance optimization, also known as “performance tuning”, is usually an iterative approach to making and then monitoring modifications to an application ...
Read more >Performance Optimization in Software Development - Medium
Performance Optimization of a programs and software is the process modifying a software system to make it work more efficiently and execute more...
Read more >Mastering Performance Optimization - The Basic Metrics And ...
Performance optimization is the process of modifying a system to amplify its functionality, thus making it more efficient and effective.
Read more >6 Performance Optimization
The single most important aspect of performance optimization is knowing what to optimize. To improve the performance of your application, you must fully ......
Read more >18 Tips for Website Performance Optimization - KeyCDN
Website performance optimization tips# · 1. Image optimization# · 2. Reduce HTTP requests# · 3. Minify CSS and JavaScript# · 4. Critical path...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Fresh cProfile stats, now with all performance improvements and a much smaller DB (thanks to #600): block-import-stats.txt
TL;DR: trie seems to be our bottleneck now, together with some
ChainDB
methods, but some of the latter can probably be cachedWe may be talking about the same thing.
https://github.com/ethereum/py-evm/blob/master/evm/db/backends/base.py
I think this needs a new API:
BaseDB.batch_set(...)
MemoryDB
would implement this as a loop calling down to individualset
calls. The LevelDB backend would use the batch APIs from plyvel.