David Mertens wrote:
Sorry for not getting back to this as quickly as I had hoped. My machine with nVidia hardware is at home and I haven't had much time in the las few evenings to play with it. This may be the case through the weekend; we shall see.

bulk88, I was not entirely sure what PERL_NO_GET_CONTEXT did. After some digging, I came across this article that seemed to clarify things quite a bit, at least for me: http://perl.active-venture.com/pod/perlguts-concurreny.html. I also did some reading and discovered that there are ways to have thread-local data in C, which was news to me. (I never learned the intricacies of C.) Suddenly the behavior of dTHX; and the whole api with the _nocontext suffix make so much more sense.

Thanks!
David



PERL_NO_GET_CONTEXT removed a bazillion func calls to Perl_get_context or in your case (since you are posix os), pthread_getspecific. This makes your XS code much faster (20 to 100% faster). Look at the preprocessed version of the .c file at https://gist.github.com/run4flat/4974702 . Sadly PERL_NO_GET_CONTEXT's biggest reason to use it (performance) isn't in perlguts. Its main purpose it to remove the extra get context func calls. The thread local data stuff ( http://perldoc.perl.org/perlxs.html#Safely-Storing-Static-Data-in-XS ) few modules use (they normally get_sv a package SV), but there is no reason why you can't use it.

Reply via email to