• Victor Stinner's avatar
    bpo-30156: Remove property_descr_get() optimization (GH-9541) · e972c136
    Victor Stinner authored
    property_descr_get() uses a "cached" tuple to optimize function
    calls. But this tuple can be discovered in debug mode with
    sys.getobjects(). Remove the optimization, it's not really worth it
    and it causes 3 different crashes last years.
    
    Microbenchmark:
    
    ./python -m perf timeit -v \
        -s "from collections import namedtuple; P = namedtuple('P', 'x y'); p = P(1, 2)" \
        --duplicate 1024 "p.x"
    
    Result:
    
    Mean +- std dev: [ref] 32.8 ns +- 0.8 ns -> [patch] 40.4 ns +- 1.3 ns: 1.23x slower (+23%)
    e972c136
2018-09-24-17-51-15.bpo-30156.pH0j5j.rst 264 Bytes