*caution* severely OT!!

Michel Talon talon at lpthe.jussieu.fr
Tue Sep 13 21:38:25 UTC 2011

"C. P. Ghost" <cpghost at cordula.ws> wrote:
> On Tue, Sep 13, 2011 at 9:34 PM, Gary Kline <kline at thought.org> wrote:
> > guys,
> >
> > can anyone start me on the way of porting a python program to C?
> > tia,
> Gary,
> if you experience a performance bottleneck somewhere,
> you may be better off performing some timings to
> determine the exact cause, and then to port the specific
> function(s) to a C module. Hints: ctypes, SWIG. Porting
> the whole program may not be necessary. Save yourself
> some quality time for other more pleasant tasks in life. ;-)
> But if you really must, I suggest to port the program to
> C++ instead of C, because there, you can make use of
> the excellent STL data types and containers, that match
> Python's somewhat. You may also consider using boost
> libraries, if the STL isn't enough.

I concur with you. If you want just to resolve a bottleneck in python
there are very low cost solutions such as using things like pyrex.
You have a nice discussion here:
Using pyrex is very similar to programming python but at a single stroke
you get huge performance boost.

If you want to rewrite the thing entirely, the problem is that python
has many high level constructs, like dictionaries, etc. which are very
convenient, but that you would need to simulate in C with huge
programming cost. While C++ has such things in standard extensions, so,
if you are not afraid by the syntactic difficulties of C++ it is a
cheaper solution, otherwise it may be terrible.

In the case of the example cited above, there was 0 performance benefit of 
using C++ over pyrex. There is a language which is syntactically very
close to python and has the same facilities, but ends up in machine
code, this could interest you, it is Common Lisp. Here the translation
would be cheap and direct. It may be that the end result is very fast,
C-like, or it may be that the end result is almost as slow as python,
there is black magic here.


Michel TALON

More information about the freebsd-questions mailing list