⚡️ Speed up function to_hexstr by 31%
#138
Open
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.
📄 31% (0.31x) speedup for
to_hexstrinelectrum/plugins/digitalbitbox/digitalbitbox.py⏱️ Runtime :
97.0 microseconds→74.3 microseconds(best of250runs)📝 Explanation and details
The optimization replaces
binascii.hexlify(s).decode('ascii')with a direct call tobytes.hex()for bytes input, achieving a 30% speedup by eliminating unnecessary object creation and method calls.Key optimization: The
bytes.hex()method is a native C implementation that directly converts bytes to lowercase hexadecimal strings, while the original approach creates an intermediate bytes object viabinascii.hexlify()and then decodes it to ASCII.What changed:
isinstance(s, bytes)to use the fasterbytes.hex()pathPerformance characteristics:
Impact on workloads: Based on the function references,
to_hexstr()is called in cryptographic contexts including:stretch_key())Since these are hot paths in a cryptocurrency wallet dealing with cryptographic operations, the 30% improvement in hex string conversion will provide meaningful performance benefits, especially when processing transactions with multiple inputs or during intensive cryptographic operations.
✅ Correctness verification report:
🌀 Generated Regression Tests and Runtime
To edit these changes
git checkout codeflash/optimize-to_hexstr-mhxjzmrxand push.