Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Certora Audit] G-09. Cache array length outside of loop #896

Merged
merged 1 commit into from
Jan 9, 2025
Merged

Conversation

remedcu
Copy link
Member

@remedcu remedcu commented Jan 9, 2025

This pull request includes several optimizations to the OwnerManager and ERC165Handler contracts by reducing the number of times array lengths are accessed within loops. These changes aim to improve the efficiency of the code by storing the array lengths in variables before the loops.

If not cached, the solidity compiler will always read the length of the array during each iteration. That is, if it is a storage array, this is an extra sload operation (100 additional extra gas for each iteration except for the first) and if it is a memory array, this is an extra mload operation (3 additional gas for each iteration except for the first).

Optimizations in OwnerManager contract:

Optimizations in ERC165Handler contract:

@remedcu remedcu self-assigned this Jan 9, 2025
@remedcu remedcu marked this pull request as ready for review January 9, 2025 14:24
@remedcu remedcu requested review from akshay-ap and mmv08 January 9, 2025 14:26
@mmv08 mmv08 merged commit b2c6087 into main Jan 9, 2025
25 checks passed
@mmv08 mmv08 deleted the g09 branch January 9, 2025 16:48
@github-actions github-actions bot locked and limited conversation to collaborators Jan 9, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants