[C++-sig] new to python; old to C++

Gustavo Carneiro gjcarneiro at gmail.com
Sat Nov 1 19:51:26 CET 2008


2008/11/1 Paul Melis <paul at pecm.nl>

> Gustavo Carneiro wrote:
> >
> >     There's an interesting question about whether it's better to use
> >     boost.python or SWIG. I've been using boost.python for years, so I
> >     have a lot invested in it, but if I were starting from scratch, I
> >     might consider using SWIG because it gives you the flexibility to
> >     generate wrappers for languages other than Python.
> >
> >
> > On the other hand, SWIG generates ugly and inneficient code, at least
> > for the Python case.
> I'd like to see proof of the claim that SWIG's wrapper code is
> inefficient. In my experience it is not more inefficient than what, for
> example, boost.python via Py++ provides.


I don't know how boost.python works, but I know that, in manually wrapped
code, when calling a method Python does exactly one dictionary lookup
method_name -> method_object, while with SWIG wrappers there are always two
lookups method_name -> method_object, then functiona_name ->
function_object.  In addition, at least one python opcode has to be
interpreted between method and function invocation.

"inefficient" is a subjective term and I should not have used it, but I can
state with almost certainty (not having measured it) that manually wrapped
code (or pybindgen generated code, for that matter, but I don't mean
boost.python because i don't know it well enough) is faster than SWIG
generated code.  I am not going to argue whether the difference is
substantial for practical uses, I don't know, I just argue that the
difference exists.

Regards,
-- 
Gustavo J. A. M. Carneiro
INESC Porto, Telecommunications and Multimedia Unit
"The universe is always one step beyond logic." -- Frank Herbert
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cplusplus-sig/attachments/20081101/dff61f67/attachment.htm>


More information about the Cplusplus-sig mailing list