• Alexandre Vassalotti's avatar
    Remove the tuple reuse optimization in _Pickle_FastCall. · acf0af95
    Alexandre Vassalotti authored
    I have noticed a race-condition occurring on one of the buildbots because of
    this optimization. The function called may release the GIL which means
    multiple threads may end up accessing the shared tuple. I could fix it up by
    storing the tuple to the Pickler and Unipickler object again, but honestly it
    really not worth the trouble.
    
    I ran many benchmarks and the only time the optimization helps is when using a
    fin-memory file, like io.BytesIO on which reads are super cheap, combined with
    pickle protocol less than 4. Even in this contrived case, the speedup is a
    about 5%. For everything else, this optimization does not provide any
    noticable improvements.
    acf0af95
_pickle.c 214 KB