Conversation
ed25519.py
Outdated
Member
There was a problem hiding this comment.
So I think we should move the reduce(...) bit into it's own function, also I think it makes sense to unroll the shift-and-or ops in the reduce and just write them out, it's only 4 ops, and I think it'd be easier to read.
Replace manual bit unpacking of integers with C-speed unpacking using the struct module. Conflicts: ed25519.py
Add a small comment noting generation of public key
Author
|
rebased onto xrange commit |
Member
|
Strange, tests didn't seem to run on this? |
Author
Author
|
Is there any wont to merge this? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
I added a simple profiling script to show call profiles of the main functions.
This allowed me to see that the manual bit unpacking performed by the likes of
Was causing a major slowdown, I thought it seemed to be 1/5th of the time for a signature validation.
With the help of a cool dude called ssbr in #python, I've managed to replace generators like the one above with C-speed unpacking using the
structmodule.This resulted in 30% faster in signature validation and 50% faster signature generation.
There are two functions which still use by-the-bit packing,
encodeintandencodepoint; onlyencodepointis still contributing a small noticeable amount of time to runtime. It's now otherwise purely taken up by the edwards/scalarmult functions. You still might get a noticeable speed increase by optimizing these two encoding functions.Lastly, bit twiddling is hard.
pyca
Ivoz