[#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
Re: Ruby performanmce improvements
Michael Selig wrote: > 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 > Could you run my matrix benchmark against these and post the results here? The benchmark is at http://rubyforge.org/cgi-bin/viewvc.cgi/MatrixBenchmark/?root=cougar I got a 4X improvement by running with YARV the last time I tested this. Also, did you use "gprof"? How do your profiles compare with the ones I posted for the matrix benchmark?