[python-committers] CFFI is slow

Larry Hastings larry at hastings.org
Sat Mar 5 04:31:34 EST 2016

I guess I have two responses to that.

1. I don't know what it is about cffi that makes it slow.  Perhaps it 
could be improved?  If it got a lot of traction, maybe it'd get more 
eyes looking at it?

2. How important is this speed difference?  I suppose the answer, as 
always, is "it depends".  It depends on how often you call the C 
library, and how long you spend in the routine when you get there.  
Certainly a benchmark for library X is a worst-case scenario; in 
real-world code, for most libraries, perhaps the performance of the glue 
code isn't crucial.

I always feel a little funny when people talk about performance in 
Python.  Not that I believe performant Python isn't possible or 
desirable--just that, if you're writing your code in Python, you've 
already implicitly conceded that performance is not your top priority.  
The design of Python the language, and of CPython the interpreter, is 
necessarily a series of tradeoffs, and it's not like those tradeoffs are 
always made in favor of performance.

Plus, this change itself would be such a tradeoff.  We'd (likely) be 
giving up performance of glue code for C libraries, and in return for 
this we could finally perform the brain surgery on CPython that we're 
all dying to do.  It's reasonable to suggest that such radical changes 
to CPython might "pay" for the loss of performance in the glue code.

Of course this is all academic.  I absolutely don't think we can get rid 
of the C API, or even modify it in any meaningful way that would let us 
abstract away implementation details like reference counting.  As I said 
in my original email, this magic wand simply doesn't exist.


On 03/05/2016 12:42 AM, Stefan Krah wrote:
> Larry Hastings <larry <at> hastings.org> writes:
>>      If we could wave a magic wand and get all extension authors to
>>      switch to writing their extensions in Python and using cffi, we
>>      should absolutely do it.
> CFFI is slow. This would effectively kill one of the strongholds of CPython.
> IMO CPython's C-API is the best out there and a large part of Python's success.
> We're talking about a slowdown of at least an order of magnitude here:
>    https://mail.python.org/pipermail/python-dev/2013-December/130772.html
> I think people who don't need the C-API can use PyPy.
> Stefan Krah
> _______________________________________________
> python-committers mailing list
> python-committers at python.org
> https://mail.python.org/mailman/listinfo/python-committers
> Code of Conduct: https://www.python.org/psf/codeofconduct/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-committers/attachments/20160305/b1df09c2/attachment.html>

More information about the python-committers mailing list