⚡️ Speed up function to_hexstr by 15%
#1
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.
📄 15% (0.15x) speedup for
to_hexstrinelectrum/plugins/digitalbitbox/digitalbitbox.py⏱️ Runtime :
48.1 microseconds→41.9 microseconds(best of496runs)📝 Explanation and details
The optimization introduces a fast path for the most common input types:
bytesandbytearray. Instead of always usingbinascii.hexlify().decode('ascii'), the code now first checks if the input is abytesorbytearrayobject and uses Python's built-in.hex()method directly.Key optimizations:
.hex()method: Forbytesandbytearrayinputs, the native.hex()method is significantly faster than thebinascii.hexlify().decode('ascii')chaintype(s) is bytes or type(s) is bytearraycheck adds minimal overhead while enabling the fast pathWhy this is faster:
.hex()method is implemented in C and avoids the intermediate bytes object creation and ASCII decoding step.hex()with 772.6ns per hit vs 1310ns per hit for the fallbackPerformance characteristics:
b'\xde\xad\xbe\xef'showing 57% improvementThe 14% overall speedup comes primarily from the common case where input is already bytes/bytearray, which represents the vast majority of real-world usage in a hardware wallet plugin.
✅ Correctness verification report:
🌀 Generated Regression Tests and Runtime
To edit these changes
git checkout codeflash/optimize-to_hexstr-mhctddr0and push.