#defines in Ruby's .c files

P

Phil Tomson

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)?

Phil
 
Y

Yukihiro Matsumoto

Hi,

In message "Re: #defines in Ruby's .c files"
on Thu, 2 Feb 2006 06:45:53 +0900, (e-mail address removed) (Phil Tomson) 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.
 
P

Phil Tomson

Hi,

In message "Re: #defines in Ruby's .c files"
on Thu, 2 Feb 2006 06:45:53 +0900, (e-mail address removed) (Phil Tomson) 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.

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

Phil
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,432
Messages
2,571,682
Members
48,796
Latest member
Greg L.

Latest Threads

Top