[Cython] Can we remove the FastGIL implementation?

Stefan Behnel stefan_ml at behnel.de
Wed Sep 20 05:27:37 EDT 2023


da-woods schrieb am 19.09.23 um 21:38:
> I think the detail that was missing is you need to add the `#cython: 
> fast_gil = True` to enable it.
> [...]
> So my conclusion is that from 3.11 onwards Python sped up their own GIL 
> handling to about the same as we used to have, and fastgil has turned into 
> a pessimization.

I tried the benchmark with the master branch on my side again, this time 
with correct configuration. :)

Turns out that enabling the FastGIL feature makes it much slower for me (on 
Ubuntu Linux 20.04) in both Py3.8 and 3.10:

"""
* Python 3.10 (-DCYTHON_FAST_GIL=0)
Running the test (already held)...
took 1.2482502460479736
Running the test (released)...
took 6.444956541061401
Running the test (already held)...
took 1.2358744144439697
Running the test (released)...
took 6.4064109325408936

* Python 3.10 (-DCYTHON_FAST_GIL=1)
Running the test (already held)...
took 2.243091583251953
Running the test (released)...
took 7.32707667350769
Running the test (already held)...
took 2.4065449237823486
Running the test (released)...
took 7.50264573097229
"""

I also tried it with PGO enabled and got more or less the same result. The 
Python installations that I tried it with were both PGO builds.

It's probably mixed across platforms, different configurations and C 
compilers. I looked through the "What's new" document for Py3.10 and 3.11 
but couldn't find mentions of GIL improvements. Just that some other things 
have become faster.

So – disable the feature in Python 3.11 and later? (Currently it's disabled 
in 3.12+.)

Py3.11+ would suggest that we keep the code in Cython 3.1, since that will 
support older Python versions that still seem to benefit from it.

Stefan



More information about the cython-devel mailing list