Message260124
The attached patch implements a free-list for single-digit longs. We already have free lists for many fundamental types, such as floats & unicode.
The patch improves performance in micro-benchmarks by 10-20%. It'll also lessen memory fragmentation issues.
== Benchmarks ==
### spectral_norm ###
Min: 0.268018 -> 0.245042: 1.09x faster
Avg: 0.289548 -> 0.257861: 1.12x faster
Significant (t=18.82)
Stddev: 0.01004 -> 0.00640: 1.5680x smaller
-m timeit -s "loops=tuple(range(1000))" "for x in loops: x+x"
with patch: 34.5 usec without patch: 45.9 usec
== Why only single-digit? ==
I've also a patch that implements free-lists for 1-digit, 2-digits and 3-digits longs, and collects statistics on them. It looks like we only want to optimize 1-digit longs:
* 2to3 benchmark (the first number is the number of all N-digit longs, the second number is the number of longs created via free-list):
===> d1_longs = 142384 124759
===> d2_longs = 6872 6264
===> d3_longs = 2907 2834
* richards:
===> d1_longs = 219630 219033
===> d2_longs = 1455 1096
===> d3_longs = 630 627
* spectral_norm:
===> d1_longs = 133928432 133927838
===> d2_longs = 1471 1113
===> d3_longs = 630 627 |
|
Date |
User |
Action |
Args |
2016-02-11 19:22:36 | yselivanov | set | recipients:
+ yselivanov, mark.dickinson, vstinner, serhiy.storchaka |
2016-02-11 19:22:36 | yselivanov | set | messageid: <1455218556.74.0.414585930827.issue26341@psf.upfronthosting.co.za> |
2016-02-11 19:22:36 | yselivanov | link | issue26341 messages |
2016-02-11 19:22:36 | yselivanov | create | |
|