# EPF5 Week 11 Updates This week I worked on the benchmarking suite for rust ssz implementations. I'm calling it [ssz-arena](https://github.com/ghiliweld/ssz-arena)! I'm hoping this will be *the* place people come to compare rust ssz implementations against each other. What I'm still unsure about is whether it will be possible to crown a single crate as the best, or whether there's some tradeoff space people will be interested in exploring and having it visualized for them in some way. So what can ssz-arena do today? It lets you test `SignedBeaconBlock` and `BeaconState` decoding on real blockchain data (thank you ethdo and beaconcha.in), measuring walltime as well as throughput. testers can specify which implementations to benchmark using features flags, today only `sigp` (on by default) and `grandine` are available. I envision people throwing their hat in the ring by submitting PRs with their own crates and features flags. Of course, my implementation will be in the arena soon enough :) ![image](https://hackmd.io/_uploads/HkXlcR_jA.png) It leverages the existing tooling provided by [criterion](https://bheisler.github.io/criterion.rs/book/) so we don't have the reinvent the wheel. Fortunately, Criterion is fairly extensible so we can add nifty features later on (like flamegraphs and alloc tracking). Here's what the benchmark output looks like: ![Screen Shot 2024-08-24 at 11.01.23 PM](https://hackmd.io/_uploads/SJeqRGdjC.png) ### Job Not Finished There's still some stuff to work on, that I'll get to throughout the rest of the fellowship: - Grandine beacon state decoding is very slow, which is odd because beacon block decoding is blazingly fast. I'll have to look into why. - I want to add flamegraph outputs - Ideally, blockchain data could be loaded from the latest served beacon state (from [beaconcha.in](https://sync-mainnet.beaconcha.in/)). Right now, a user must provide `beacon-block.ssz` and `beacon-state.ssz` files themselves. - Encoding benchmarks should be added as well but that's trivial enough to do. I've focused on decoding so far because that's the most impactful thing to speedup. - I want to measure total allocated bytes as well as number of allocations, instead of just measuring walltime. - I'll be fielding feedback about anything else I can add to make this even better.