perf(l2): don't recompute transaction senders when building blocks #2097
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
This PR modifies the code so that, when building payloads, we don't recompute the transactions' senders, but rather use the one that was already calculated when added to the mempool.
This represents a roughly 10-15% performance improvement on the
build_payload
function. For L1 this is mostly irrelevant, as it will almost never build payloads itself; for L2 this matters, as the L2 has to build (sequence) blocks itself.Requires merging #2090 first
Flamegraph recomputing the address:
Flamegraph using the cached value:
Note that in the first flamegraph the
execute_tx
function spends a decent part in thetx_env
function, which is where the sender's address is computed. On the second onetx_env
is gone.Description
Closes #issue_number