# EPF5 Week 21 Update I tried profiling this week but didn't find anything conclusive with regards to improving performance. I also tried some optimizations that I felt might speed things up, even though they were adhoc. Changes like: - Replacing [`first_err`](https://crates.io/crates/first-err) with `itertools::process_results`. - Passing a mutable slice from the initialized `Vec` in `SszEncode::to_ssz`. This should be a low-hanging fruit for an added speedup. - Using iterators instead of for loops on list encoding. - I talked about adding some bound checks but those seemed to drastically worsen performance. I also spent some time reworking ssz-arena, the benchmarking suite. I'm transition back to divan for the regular wall-time and allocation benchmarks all-in-one, but also using criterion in the background to generate plots. I managed the suppress the criterion cli output so you only see the one for divan. Divan doesn't generate plots so this was a workaround I found. I'm going to spend the week leading up to my flight working on new features like the `SszHash` and `SszCheck` traits. The hash trait is self-explanatory, but the check is new. I'm thinking it would be cool if we could check that some bytes are "well-formed" with respect to a Container (as defined in the ssz spec). Devs could check if bytes can plausible represent a given object without decoding it entirely. The idea came to me when Daniel, a fellow cohort member, suggested that direct access decoding would require a well-formedness check beforehand. I would like to work on direct acess someday, so `SszCheck` would be a necessary pre-cursor to this. I think I maxed out the speed this crate can obtain, but I left some ample benchmarking work for me to do on the flight to Devcon as well, just in case those changes I made above do pan out. I want to get the benchmarking suite in a state where I can consistently tell what changes have a real effect.