Python in a desktop environment
duncan.booth at invalid.invalid
Sun Mar 11 11:22:54 CET 2007
"David Cramer" <dcramer at gmail.com> wrote:
> On Mar 10, 10:52 pm, "sjdevn... at yahoo.com" <sjdevn... at yahoo.com>
>> David Cramer wrote:
>> > If you had an application that you were about to begin development on
>> > which you wanted to be cross platform (at least Mac and Windows),
>> > would you suggest using c++ and Python?
>> I'd strongly consider a pure python solution (I'd choose wxpython),
>> but if I needed to code backend stuff in a lower level language I'd
>> use C rather than C++.
> Well we want it to be very robust, and python isn't exactly the
> fastest language, or one with the lowest overhead :)
So if you want it to be robust it's a no brainer: Python and no C++ or C.
I'd advise you to start off doing it in pure Python, then when you get it
working see if it is fast enough, and if not profile it and find the
bottlenecks. Those bits which really do need speeding up you should then
rewrite using Pyrex, which won't take long at all since it is basically the
same syntax. Also see whether Psyco helps.
Python can be slow, but if you leverage the built in functionality
correctly you'll find it isn't much slower than C/C++ for many tasks, and
can even be faster than you would get from C/C++ without a spending a very
long time optimising it (that's because people have already spent a very
long time optimising Python's builtin functionality).
Even if you do eventually find you have to rewrite parts of the code in
C/C++ you should first have done what you can to optimise it in Python.
Usually the best way to speed up something which is too slow is to use a
different algorithm. That sort of change is comparatively easy to do in
Python but an expensive programming exercise in C/C++. When you come to
reimplement it then you'll be converting the already optimised code, which
in many cases will be much easier than writing it in C/C++ from scratch.
If you look at http://page.mi.fu-berlin.de/~prechelt/Biblio/jccpprtTR.pdf
you'll see that, at least for that task, the relative runtimes for C/C++
and Python widely overlap. Yes, the C/C++ implementation included some very
fast ones, but they also included slows ones (and only Python of all the
languages tested had no unusable implementations). OTOH, time to write the
programs does not overlap. Of course, since that paper was written Python
has changed a lot.
More information about the Python-list