Speed up UUID creation for Element._id
#101
Merged
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.
uuid.uuid4().hex, used inElement.__init__to defineself._id, is considerably slower thanbinascii.hexlify(os.urandom(16)).decode().uuid4usesos.urandom(16)under the hood when creating a cryptographically-secure UUID, so creating UUIDs forElement-class objects usinghexlifyleads to a dramatic speed-up (I found about ~60%), which has implications for subclasses ofElement. No new requirements are needed asbinasciiis already in the Python standard library, so this is essentially a free, pretty big speed bump (especially when considering that someElementsubclasses infoliumthemselves create child instances ofElementwhen instantiated).self._id = uuid4().hex:self._id = hexlify(urandom(16)).decode():