-
-
Notifications
You must be signed in to change notification settings - Fork 33.2k
Closed
Labels
3.12only security fixesonly security fixesperformancePerformance or resource usagePerformance or resource usagestdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-featureA feature request or enhancementA feature request or enhancement
Description
Feature or enhancement
CPython 3.11 is on average 25% faster than CPython 3.10
Therefore hope the python 3.12 stdlibs can get optimized as well, since maybe web could use secrets tokens a lot
Pitch
Lines 48 to 59 in 7c9c993
| def token_hex(nbytes=None): | |
| """Return a random text string, in hexadecimal. | |
| The string has *nbytes* random bytes, each byte converted to two | |
| hex digits. If *nbytes* is ``None`` or not supplied, a reasonable | |
| default is used. | |
| >>> token_hex(16) #doctest:+SKIP | |
| 'f9bf78b9a18ce6d46a0cd2b0b86df9da' | |
| """ | |
| return binascii.hexlify(token_bytes(nbytes)).decode('ascii') |
import os
t = os.urandom(32)
# Before:
timeit binascii.hexlify(t).decode('ascii') # 215 ns ± 6.7 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)
# After:
timeit t.hex() # 91 ns ± 1.6 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)Metadata
Metadata
Assignees
Labels
3.12only security fixesonly security fixesperformancePerformance or resource usagePerformance or resource usagestdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-featureA feature request or enhancementA feature request or enhancement