#defines in Ruby's .c files

I was talking to someone on irc who was trying to speed up sockets - he
came up
with a way to do it by modifying sysread() so that a new buffer doesn’t
always
have to be allocated on each call. (sped up sockets by 314x by his
account, BTW
:slight_smile: However, he had to patch the Ruby source code to do this because he
was not
able to access a macro (READ_DATA_BUFFERED) from his extenstion code.
Turns
out that the macro READ_DATA_BUFFERED is defined in io.c, so you can’t
use it
from an extenstion.

So, I got to thinking that maybe #defines like that should go into .h
files,
not .c files (maybe it should be #define’d in rubyio.h) so that they are
accessable in extenstions.

Would it be possible to move some of them to .h files for 1.8.5 (or at
least
before 2.0)?

Phil

Hi,

In message “Re: #defines in Ruby’s .c files”
on Thu, 2 Feb 2006 06:45:53 +0900, [email protected] (Phil T.)
writes:
|
|I was talking to someone on irc who was trying to speed up sockets - he came up
|with a way to do it by modifying sysread() so that a new buffer doesn’t always
|have to be allocated on each call. (sped up sockets by 314x by his account, BTW
|:) However, he had to patch the Ruby source code to do this because he was not
|able to access a macro (READ_DATA_BUFFERED) from his extenstion code. Turns
|out that the macro READ_DATA_BUFFERED is defined in io.c, so you can’t use it
|from an extenstion.
|
|So, I got to thinking that maybe #defines like that should go into .h files,
|not .c files (maybe it should be #define’d in rubyio.h) so that they are
|accessable in extenstions.
|
|Would it be possible to move some of them to .h files for 1.8.5 (or at least
|before 2.0)?

How about merging his patch to io.c? I would be very glad to apply if
it increases io performance 314 times.

						matz.

In article [email protected],
Yukihiro M. [email protected] wrote:

|out that the macro READ_DATA_BUFFERED is defined in io.c, so you can’t use it
it increases io performance 314 times.

  					matz.

It looks like he found some other problems with that patch (core dumps).
So
the idea is being rethought.

Phil