Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.1k
gh-99305:secrets.token_hex()
speeded up 2x#99306
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
ghost commentedNov 9, 2022 • edited by ghost
Loading Uh oh!
There was an error while loading.Please reload this page.
edited by ghost
Uh oh!
There was an error while loading.Please reload this page.
bedevere-bot commentedNov 9, 2022
Most changes to Pythonrequire a NEWS entry. Please add it using theblurb_it web app or theblurb command-line tool. |
@NewUserHa Can you sign the CLA and write a news entry? The improvement looks good |
Done. |
The speed improvement depends on a bit on the number of bytes requested. A benchmark also taking the
|
Misc/NEWS.d/next/Library/2022-11-10-11-51-39.gh-issue-99305.6LzQc3.rst OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
…zQc3.rstCo-authored-by: Pieter Eendebak <pieter.eendebak@gmail.com>
right, taking nbytes=2048%timeitbinascii.hexlify(token_bytes(nbytes)).decode('ascii')%timeittoken_bytes(nbytes).hex()# 4.86 µs ± 449 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)# 3.93 µs ± 87.3 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)# 1.2366412213740458015267175572519 fasternbytes=32%timeitbinascii.hexlify(token_bytes(nbytes)).decode('ascii')%timeittoken_bytes(nbytes).hex()# 743 ns ± 66.8 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)# 528 ns ± 28 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)# 1.407196969696969696969696969697 fasternbytes=1%timeitbinascii.hexlify(token_bytes(nbytes)).decode('ascii')%timeittoken_bytes(nbytes).hex()# 652 ns ± 80.7 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)# 442 ns ± 53.6 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)# 1.2366412213740458015267175572519 faster t=os.urandom(2048)%timeitbinascii.hexlify(t).decode('ascii')%timeitt.hex()# 3.69 µs ± 579 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)# 2.78 µs ± 349 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)# 1.3273381294964028776978417266187 fastert=os.urandom(32)%timeitbinascii.hexlify(t).decode('ascii')%timeitt.hex()# 323 ns ± 112 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)# 116 ns ± 3.33 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)# 2.7844827586206896551724137931034 fastert=os.urandom(1)%timeitbinascii.hexlify(t).decode('ascii')%timeitt.hex()# 221 ns ± 13.7 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)# 77.4 ns ± 1.97 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)# 2.8552971576227390180878552971576 faster Line 2482 incb04a09
cpython/Modules/clinic/binascii.c.h Line 486 inf07adf8
binascii.hexlify() works the same withbytes.hex() +encode() but has different implements. merging may get anotherfree performance boost that can faster python. |
|
right, |
Uh oh!
There was an error while loading.Please reload this page.
secrets.token_hex()
speeded up 2x #99305