On Mon, 03 May 2010, Reini Urban wrote: > 2010/5/3 Ruslan Zakirov <ruz@bestpractical.com>: > > While testing a simple benchmark script I noticed that threaded > > version is 25% faster. I suspect that the code may be is not thread > > safe, however don't know anything about perl threads. > > This is because threaded passes the my_perl struct on the stack, PL_op > is just 4(%esi). Note that fox XS code this is only true if you #define PERL_NO_GET_CONTEXT Otherwise my_perl will actually be redefined to *Perl_get_context(), which will fetch the actual my_perl from thread-local storage, which will be really slow. > Accessing stack locals is much faster than accessing a global. So please make sure you define PERL_NO_GET_CONTEXT in your modules if you are an XS author. It is not on by default for backwards compatibility reasons only. Cheers, -JanThread Previous | Thread Next