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)?
In message "Re: #defines in Ruby's .c files" on Thu, 2 Feb 2006 06:45:53 +0900, ptkwt@aracnet.com (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.
In article <1138861656.852332.2507.nullmailer@x31.priv.netlab.jp>,
···
Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
In message "Re: #defines in Ruby's .c files" > on Thu, 2 Feb 2006 06:45:53 +0900, ptkwt@aracnet.com (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.