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

caching result of reading storage variable to save gas #4535

Merged
merged 1 commit into from
Aug 25, 2023

Conversation

molly-ting
Copy link
Contributor

Caching the result of reading storage variable $._initialized to stack could reduce one sload, thus saving gas.

PR Checklist

  • Tests
  • Documentation
  • Changeset entry (run npx changeset add)

@changeset-bot
Copy link

changeset-bot bot commented Aug 21, 2023

⚠️ No Changeset found

Latest commit: d3ef00a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@0xVolosnikov
Copy link
Contributor

Hello! Have you checked the difference in gas? It seems to me that the compiler is capable of optimizing this case on its own.

@frangio
Copy link
Contributor

frangio commented Aug 25, 2023

There is some improvement according to our gas measurements: https://github.com/OpenZeppelin/openzeppelin-contracts/actions/runs/5930652468

Close to 100 gas, so it does sound like the compiler is not optimizing the redundant SLOAD.

@frangio frangio requested a review from Amxx August 25, 2023 17:19
@Amxx Amxx merged commit b2e7bab into OpenZeppelin:master Aug 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants