develooper Front page | perl.perl5.porters | Postings from May 2010

RE: [PATCH] shift; optimization

Thread Previous | Thread Next
From:
Jan Dubois
Date:
May 3, 2010 13:20
Subject:
RE: [PATCH] shift; optimization
Message ID:
024f01caeafe$115a16f0$340e44d0$@activestate.com
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,
-Jan


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About