[#9381] Native Thread extension for 1.8 — "Abhisek Datta" <abhisek@...>
Hello,
[#9382] the sign of a number is omitted when squaring it. -2**2 vs (-2)**2 — <noreply@...>
Bugs item #6468, was opened at 2006-11-03 17:25
On 11/3/06, noreply@rubyforge.org <noreply@rubyforge.org> wrote:
Jacob Fugal wrote:
Hi,
Yukihiro Matsumoto wrote:
[#9385] merge YARV into Ruby — SASADA Koichi <ko1@...>
Hi,
On Nov 3, 2006, at 9:11 PM, SASADA Koichi wrote:
On 11/4/06, SASADA Koichi <ko1@atdot.net> wrote:
On Monday 06 November 2006 16:01, Kirill Shutemov wrote:
On Monday 06 November 2006 10:15, Sylvain Joyeux wrote:
On 11/6/06, Sean Russell <ser@germane-software.com> wrote:
On Monday 06 November 2006 13:37, Kirill Shutemov wrote:
On 11/6/06, Kirill Shutemov <k.shutemov@gmail.com> wrote:
On 11/8/06, Austin Ziegler <halostatue@gmail.com> wrote:
On 11/6/06, ville.mattila@stonesoft.com <ville.mattila@stonesoft.com> wrote:
On 2006-11-07 00:47:20 +0900, Kirill Shutemov wrote:
On 11/6/06, Marcus Rueckert <mrueckert@suse.de> wrote:
On Tue, 7 Nov 2006, Joshua Haberman wrote:
[#9402] fast mutexes for 1.8? — MenTaLguY <mental@...>
Many people have been using Thread.critical for locking because Ruby
On Mon, 6 Nov 2006, MenTaLguY wrote:
On Mon, 2006-11-06 at 23:17 +0900, Hugh Sasse wrote:
On Tue, 7 Nov 2006, MenTaLguY wrote:
On Mon, 6 Nov 2006, MenTaLguY wrote:
On Mon, 2006-11-06 at 23:21 +0900, khaines@enigo.com wrote:
On Mon, 2006-11-06 at 09:38, MenTaLguY wrote:
[#9450] Bikeshed: No more Symbol < String? — Kornelius Kalnbach <murphy@...>
Hi ruby-core!
Hi,
David wrote:
On Nov 7, 2006, at 2:28 AM, Yukihiro Matsumoto wrote:
Hi,
Hi --
Hi,
Too bad, I was rejoicing to remove the need of
[#9470] Ruby performanmce improvements — "Michael Selig" <michael.selig@...>
I know you guys are in the middle of YARV stuff, but I thought you might be
Hi,
[#9472] Re: fast mutexes for 1.8? — Brent Roman <brent@...>
At RubyConf 2005 I gave an off-the-wall little talk about the
[#9493] Future Plans for Ruby 1.8 Series — URABE Shyouhei <shyouhei@...>
This week Japanese rubyists were talking about the future of ruby_1_8
[#9515] External entropy pool for random number generator — "Kirill Shutemov" <k.shutemov@...>
In the attachment patch which allow to use external entropy pool for
Hi,
On 11/13/06, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
Hi,
On 11/13/06, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
[#9520] Re: fast mutexes for 1.8? — Brent Roman <brent@...>
[#9540] Different return values for setter methods — "Marcel Molina Jr." <marcel@...>
>> class Setter; def set=(value) 1 end end
[#9547] Net::FTP should check the control connection on EPIPE — Simon Williams <simon.williams@...>
Hi,
Hi,
On Tue, Feb 06, 2007 at 11:23:01AM +0900, Shugo Maeda wrote:
[#9554] Ruby 1.[89].\d+ and beyond. — Hugh Sasse <hgs@...>
I've been thinking about how version numbers are restricting what we can do.
On Fri, 17 Nov 2006, Eric Hodel wrote:
On Nov 16, 2006, at 12:02 PM, Hugh Sasse wrote:
On 11/16/06, Eric Hodel <drbrain@segment7.net> wrote:
On Nov 19, 2006, at 6:35 AM, Robert Dober wrote:
On Nov 19, 2006, at 8:13 AM, James Edward Gray II wrote:
> What if we need to exceed 1.8.9?
On Nov 19, 2006, at 10:30 PM, Kornelius Kalnbach wrote:
On Mon, 20 Nov 2006, Eric Hodel wrote:
Hugh Sasse wrote:
[#9572] io_write (io.c) bug (and its fix) under MS Windows for GUI apps (rubyw) — "Mounir Idrassi" <idrassi@...>
Hi all,
[#9581] type information — Deni George <denigeorge@...>
Hi,
Nobuyoshi Nakada wrote:
[#9604] #ancestors never includes the singleton class (inconsistent) — <noreply@...>
Bugs item #6820, was opened at 2006-11-22 08:49
Hi,
> It is supposed to. Singleton classes (or eigenclasses, if you want to
On 11/27/06, Sylvain Joyeux <sylvain.joyeux@m4x.org> wrote:
> 2) You could think of all objects already having a singleton class
Ruby performanmce improvements
I know you guys are in the middle of YARV stuff, but I thought you might be
interested in some performance improvements (around 20%) I made to Ruby in
my spare time recently.
One afternoon when I had a bit of spare time I decided to compile Ruby with
profiling (C profiling that is), to try to see where it was spending most of
its time. Also I needed some benchmarks to test with, so, for want of
anything better, I took some ruby scripts from the "Computer Language
Shootout" (http://shootout.alioth.debian.org/).
I found 3 main areas which I then focused on:
1) rb_call() especially rb_call0()
2) Loops & rb_yield(), especially rb_yield_0()
3) The large number of recursive calls to rb_eval()
So addressing these one at a time:
1) rb_call()
I found that many of these calls are to CFUNC (internal C) methods such as
Fixnum#+, most of which are simple, and don't access anything other than
their parameters. However, in order to execute these methods, ruby is still
doing quite a bit of work in rb_call0(), such as setting up a stack frame
etc, which is usually not used. So I made an optimisation that if a CFUNC
method is being called, and no block is being passed to it, then it bypasses
stack frame creation. (I also had to make a small hack to "backtrace()" to
handle errors in this case).
2) Loops & rb_yield()
Most of Ruby's loops end up calling rb_yield() for each iteration. However
much of the work that rb_yield_0 does each time can be often be done once at
the start of the loop:
- Pushing frame, block, vars, class etc
- Freeing/creation of dynamic variables (instead they can be initialized
to NIL each time, unless the context has been saved)
Also loops done by rb_iterate() (via an IFUNC stub) can be simplified
further to reduce the overhead of "double-yield".
3) rb_eval() calls
I simply inlined the code for common, simple nodes such as: NODE_LIT,
NODE_LVAR etc in certain places within rb_eval(), which resulted in a large
reduction in the number of calls to rb_eval().
After applying these mods, I was able to achieve a performance improvement
averaging 20% (ie: 20% less User CPU time) under Linux/386 in the "shootout"
benchmarks. I know these are not representative of Ruby programs in general,
but I had to use something that was simple to time.
My mods are based on Ruby 1.8.4.
I am not 100% sure that my mods haven't broken something - especially in the
Garbage Collector (which I haven't really tried to understand), but it seems
to work fine here. I did not touch the parser at all.
Please let me know if you'd like me to post a patch. If I get some more
spare time, I'd be happy to look at the Ruby 2.0 code to see if similar
optimizations can be made.
Mike