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

Remove pooling and other special cases for SHA-256 digests #985

Merged
merged 5 commits into from
Nov 11, 2024

Conversation

bertm
Copy link
Contributor

@bertm bertm commented Oct 5, 2024

During review of #831 it was observed that the overhead of pooling outweights that of constructing new digest instances.
This PR removes the pooling mechanism from the SHA256 helper class. Because the return-to-pool method is now a no-op, its usages are removed. The method is now deprecated, but remains for backwards compatibility.

While cleaning up I encountered the HashType enum, which had a special case for pooling of SHA-256 too. This deprecates the related return-to-pool method, and removes the special handling of SHA-256 message digest creation in this class.

bertm added 5 commits October 5, 2024 17:48
SHA256 digests are cheap to construct nowadays. The pooling mechanism is
complex and microbenchmarks show that it actually reduces performance.

Remove the pooling, but keep the return digest method for compatibility.
This is already checked during construction of Util.mdProviders, there
is no need to do the WrapperManager.stop() dance here because this will
never happen.
Since the removal of SHA256 digest pooling, SHA256.returnMessageDigest
has become a no-op function. Remove all of its uses.
HashType had a special case around SHA256 but this is no longer needed
since these digests are no longer pooled. Simplify and generalize the
solution by having HashType create all digests, and reducing SHA256 to
a compatibility wrapper offering a few convenience functions.
Copy link
Contributor

@ArneBab ArneBab left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That’s great! I love seeing the double-try blocks become unnecessary and be removed.

Thank you!

@ArneBab ArneBab merged commit 2418270 into hyphanet:next Nov 11, 2024
1 check passed
@ArneBab
Copy link
Contributor

ArneBab commented Nov 11, 2024

merged — thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants