[Python-Dev] Re: The Other Py2.4 issue? (original) (raw)
Delaney, Timothy C (Timothy) tdelaney at avaya.com
Mon Dec 13 01:11:47 CET 2004
- Previous message: [Python-Dev] MinGW And The other Py2.4 issue
- Next message: [Python-Dev] MinGW And The other Py2.4 issue
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Adam Bark wrote:
Now this might sound a bit stupid but I've only been programming in python for about 6 months and before that about the same on VB. Anyway here goes, as python is built in C & C++ surely every piece of python code has a corresponding piece of C/C++ albeit more complex. So would it be possible to somehow make a program to convert the Python to C & C++ which can then be compiled with a C/C++ compiler.
Yes. And it would run at about the same speed as CPython.
The only way to significantly improve this is to remove much of the dynamism of Python. As an example, I've been playing around with Raymond's constant binding - making it do more aggressive binding (I'll give an example later). By binding constants, I'm able to reduce the runtimes for psyco-compiled versions of friendly code (lots of things that can be converted into constant references) from around 2 seconds to less than 0.001 seconds.
That's a very significant speedup. Unfortunately, it doesn't translate as well into real-world code - or even benchmarks (parrotbench for example gets a slight speedup but it's not overly significant).
As a quick example if the changes I'm playing with,
def func()
docutils.parsers.rst.states.struct.__init__
Raymond's generates:
JUMP_FORWARD 0
LOAD_CONST (docutils)
LOAD_ATTR (parsers)
LOAD_ATTR (rst)
LOAD_ATTR (states)
LOAD_ATTR (struct)
LOAD_ATTR (__init__)
Mine generates
0 JUMP_ABSOLUTE 15
3 NOP
4 NOP
5 NOP
6 NOP
7 NOP
8 NOP
9 NOP
10 NOP
11 NOP
12 NOP
13 NOP
14 NOP
15 LOAD_CONST (<unbound method Struct.__init__)
I've also been doing some peephole optimisations - the above actually ends up being an immediate jump to the return bytecode, but that's fairly useless. Using JUMP_ABSOLUTE instead of JUMP_FORWARD simplifies doing this.
Once I've got the code into a fit state I'll send it to you if you're interested Raymond ...
Tim Delaney
- Previous message: [Python-Dev] MinGW And The other Py2.4 issue
- Next message: [Python-Dev] MinGW And The other Py2.4 issue
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]