Python script and C++

Jorgen Grahn grahn+nntp at snipabacken.dyndns.org
Tue Nov 28 07:28:59 EST 2006


On Tue, 28 Nov 2006 10:12:23 +0100, Marc 'BlackJack' Rintsch <bj_666 at gmx.net> wrote:
> In <1164691472.172783.151290 at n67g2000cwd.googlegroups.com>, Ravi Teja
> wrote:
>
>>>     I am new to python  and currently I am working on a traffic simulation
>>> which I plan to define the various agents using scripting. It's kind of like
>>> scripting for non-playable character in games. I am thinking of using python
>>> for this but I am concerned with running time. Is scripting a lot slower
>>> compared to direct implementation in C++? Does compiling the script help in
>>> any way?
>> 
>> Python is perfectly suitable for this use. Python was in use in video
>> games in this way when computers were a lot slower.
>
> There's a difference between simulations and games.  The simulation will
> not always be observed by a human being so it runs as fast as possible.
> In games the speed of NPCs is usually limited to a level the player can
> deal with.

Yeah. Simulation can mean running for a week on the best hardware available,
with the most optimized code you can come up with. And a week may be
acceptable, while two weeks are not.

> But I think Python is fine for such a task.

I am not so sure, but ...

> The only way to find out if
> it may be to slow is writing a prototype and measure.

... this is a good approach.

> Maybe it's a good
> idea to design the API for the "NPCs" independent from the language so you
> can also write them in C++ or another scripting language.

However, if that API requires thousands of calls per second during
simulation time, it doesn't help speed much, because calling C code from
Python is a pretty heavy thing in itself. The big win is when you spend a
lot of uninterrupted CPU time in C code.

One approach is to write the executive engine in C++ (once again: if needed)
and the compiler/configuration subsystem -- the thing that generates the
simulated world -- in Python. That's a perfect place for a flexible,
high-level language.

/Jorgen

-- 
  // Jorgen Grahn <grahn@        Ph'nglui mglw'nafh Cthulhu
\X/     snipabacken.dyndns.org>  R'lyeh wgah'nagl fhtagn!



More information about the Python-list mailing list