This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author vstinner
Recipients josh.r, jtaylor, neologix, njs, pitrou, skrah, vstinner
Date 2014-04-28.07:51:01
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1398671462.8.0.245261093031.issue21233@psf.upfronthosting.co.za>
In-reply-to
Content
It looks like Windows supports also lazy initialization of memory pages initialized to zero.

According to my microbenchmark on Linux and Windows, only bytes(n) and bytearray(n) are really faster with use_calloc.patch. Most changes of use_calloc.patch are maybe useless since all bytes are initilized to zero, but just after that they are replaced with new bytes.

Results of bench_alloc2.py on Windows 7: original vs calloc-4.patch+use_calloc.patch:

Common platform:
Timer: time.perf_counter
Python unicode implementation: PEP 393
Bits: int=32, long=32, long long=64, size_t=32, void*=32
Platform: Windows-7-6.1.7601-SP1
CFLAGS: None
Timer info: namespace(adjustable=False, implementation='QueryPerformanceCounter(
)', monotonic=True, resolution=1e-08)

Platform of campaign orig:
SCM: hg revision=4b97092aa4bd branch=default date="2014-04-27 18:02 +0100"
Date: 2014-04-28 09:35:30
Python version: 3.5.0a0 (default, Apr 28 2014, 09:33:30) [MSC v.1600 32 bit (Int
el)]
Timer precision: 4.47 us

Platform of campaign calloc:
SCM: hg revision=4f0aaa8804c6 tag=tip branch=default date="2014-04-28 09:27 +020
0"
Date: 2014-04-28 09:37:37
Python version: 3.5.0a0 (default:4f0aaa8804c6, Apr 28 2014, 09:37:03) [MSC v.160
0 32 bit (Intel)]
Timer precision: 4.44 us

-----------------------+-------------+----------------
Tests                  |        orig |          calloc
-----------------------+-------------+----------------
object()               |  121 ns (*) |   109 ns (-10%)
b'A' * 10              |   77 ns (*) |           79 ns
b'A' * 10**3           |  159 ns (*) |    168 ns (+5%)
b'A' * 10**6           |  428 us (*) |          415 us
'A' * 10               |   87 ns (*) |           89 ns
'A' * 10**3            |  175 ns (*) |          177 ns
'A' * 10**6            |  429 us (*) |    454 us (+6%)
'A' * 10**8            | 48.4 ms (*) |           49 ms
(None,) * 10**0        |   49 ns (*) |           51 ns
(None,) * 10**1        |  115 ns (*) |    99 ns (-14%)
(None,) * 10**2        |  433 ns (*) |          422 ns
(None,) * 10**3        | 3.58 us (*) |         3.57 us
(None,) * 10**4        | 34.9 us (*) |         34.9 us
(None,) * 10**5        |  347 us (*) |          351 us
(None,) * 10**6        | 5.14 ms (*) |   4.85 ms (-6%)
(None,) * 10**7        | 53.2 ms (*) |   50.2 ms (-6%)
(None,) * 10**8        |  563 ms (*) |    515 ms (-9%)
([None] * 10)[1:-1]    |  217 ns (*) |          217 ns
([None] * 10**3)[1:-1] | 3.89 us (*) |         3.92 us
([None] * 10**6)[1:-1] | 5.13 ms (*) |         5.17 ms
([None] * 10**8)[1:-1] |  634 ms (*) |   533 ms (-16%)
bytes(10)              |  193 ns (*) |    206 ns (+7%)
bytes(10**3)           |  266 ns (*) |   296 ns (+12%)
bytes(10**6)           |  414 us (*) |  3.89 us (-99%)
bytes(10**8)           | 44.2 ms (*) | 4.56 us (-100%)
bytearray(10)          |  229 ns (*) |    243 ns (+6%)
bytearray(10**3)       |  301 ns (*) |   330 ns (+10%)
bytearray(10**6)       |  421 us (*) |  3.89 us (-99%)
bytearray(10**8)       | 44.4 ms (*) | 4.56 us (-100%)
-----------------------+-------------+----------------
Total                  | 1.4 sec (*) | 1.16 sec (-17%)
-----------------------+-------------+----------------
History
Date User Action Args
2014-04-28 07:51:02vstinnersetrecipients: + vstinner, pitrou, njs, skrah, neologix, jtaylor, josh.r
2014-04-28 07:51:02vstinnersetmessageid: <1398671462.8.0.245261093031.issue21233@psf.upfronthosting.co.za>
2014-04-28 07:51:02vstinnerlinkissue21233 messages
2014-04-28 07:51:01vstinnercreate