Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Sep 2011 23:37:48 +0200
From:      Michel Talon <talon@lpthe.jussieu.fr>
To:        Gary Kline <kline@thought.org>, freebsd-questions@freebsd.org
Subject:   Re: *caution* severely OT!!
Message-ID:  <20110913213748.GA47026@lpthe.jussieu.fr>

next in thread | raw e-mail | index | archive | help
"C. P. Ghost" <cpghost@cordula.ws> wrote:
> On Tue, Sep 13, 2011 at 9:34 PM, Gary Kline <kline@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:
http://www.scipy.org/PerformancePython
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110913213748.GA47026>