Python and the need for speed

Christian Gollwitzer auriocus at gmx.de
Tue Apr 11 02:14:41 EDT 2017


Am 10.04.17 um 02:21 schrieb Gregory Ewing:
> Heck, you can write an exec() function for C if you really
> want. Run the C compiler in another process, dynamically
> load the object file and call it. Doing that would be very
> inefficient, but it wouldn't slow down the rest of your
> C code.

Actually, this thing exists and it is quite useful. tcc can be used as a 
library / JIT compiler for C. It does allow both writing to a dynamic 
library as well as creating callable functions in memory.

https://github.com/LuaDist/tcc/blob/master/libtcc.h#L64

What you can't do with it, however, is access to local variables. i.e. 
writing an exec which does this:

	int i=0;
	exec("i = 5");
	printf("%d", i); // prints 5

is impossible in C, and making it possible (via debug symbols, e.g.) 
would make the program slower, because C compilers reorder the 
instructions and assign variables to registers.

	Christian



More information about the Python-list mailing list