commit | d8a0bac8f761a72661fa464b34517df5294499d2 | [log] [tgz] |
---|---|---|
author | Serhiy Storchaka <storchaka@gmail.com> | Fri Jan 04 12:18:35 2013 +0200 |
committer | Serhiy Storchaka <storchaka@gmail.com> | Fri Jan 04 12:18:35 2013 +0200 |
tree | c28d30321197582c0ad09cae3da6f5bf57251bbd | |
parent | ca6142948ed1cb508c97bcaf21c57e3d337a0014 [diff] [blame] |
Issue #16674: random.getrandbits() is now 20-40% faster for small integers.
diff --git a/Modules/_randommodule.c b/Modules/_randommodule.c index d8927c0..a729817 100644 --- a/Modules/_randommodule.c +++ b/Modules/_randommodule.c
@@ -360,6 +360,9 @@ return NULL; } + if (k <= 32) /* Fast path */ + return PyLong_FromUnsignedLong(genrand_int32(self) >> (32 - k)); + bytes = ((k - 1) / 32 + 1) * 4; bytearray = (unsigned char *)PyMem_Malloc(bytes); if (bytearray == NULL) {