[#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

9 messages 2006/11/03

[#9385] merge YARV into Ruby — SASADA Koichi <ko1@...>

Hi,

42 messages 2006/11/04
[#9405] Re: merge YARV into Ruby — "Kirill Shutemov" <k.shutemov@...> 2006/11/06

On 11/4/06, SASADA Koichi <ko1@atdot.net> wrote:

[#9406] Re: merge YARV into Ruby — Sylvain Joyeux <sylvain.joyeux@...4x.org> 2006/11/06

On Monday 06 November 2006 16:01, Kirill Shutemov wrote:

[#9417] Re: merge YARV into Ruby — Sean Russell <ser@...> 2006/11/06

On Monday 06 November 2006 10:15, Sylvain Joyeux wrote:

[#9428] Re: merge YARV into Ruby — "Kirill Shutemov" <k.shutemov@...> 2006/11/06

On 11/6/06, Sean Russell <ser@germane-software.com> wrote:

[#9402] fast mutexes for 1.8? — MenTaLguY <mental@...>

Many people have been using Thread.critical for locking because Ruby

24 messages 2006/11/06

[#9450] Bikeshed: No more Symbol < String? — Kornelius Kalnbach <murphy@...>

Hi ruby-core!

21 messages 2006/11/07
[#9452] Re: Bikeshed: No more Symbol < String? — Yukihiro Matsumoto <matz@...> 2006/11/07

Hi,

[#9493] Future Plans for Ruby 1.8 Series — URABE Shyouhei <shyouhei@...>

This week Japanese rubyists were talking about the future of ruby_1_8

13 messages 2006/11/09

[#9515] External entropy pool for random number generator — "Kirill Shutemov" <k.shutemov@...>

In the attachment patch which allow to use external entropy pool for

13 messages 2006/11/11
[#9522] Re: External entropy pool for random number generator — "Nobuyoshi Nakada" <nobu@...> 2006/11/13

Hi,

[#9554] Ruby 1.[89].\d+ and beyond. — Hugh Sasse <hgs@...>

I've been thinking about how version numbers are restricting what we can do.

30 messages 2006/11/16
[#9561] Re: Ruby 1.[89].\d+ and beyond. — Eric Hodel <drbrain@...7.net> 2006/11/16

[#9563] Re: Ruby 1.[89].\d+ and beyond. — Hugh Sasse <hgs@...> 2006/11/16

On Fri, 17 Nov 2006, Eric Hodel wrote:

[#9564] Re: Ruby 1.[89].\d+ and beyond. — Eric Hodel <drbrain@...7.net> 2006/11/16

On Nov 16, 2006, at 12:02 PM, Hugh Sasse wrote:

[#9571] Re: Ruby 1.[89].\d+ and beyond. — "Robert Dober" <robert.dober@...> 2006/11/19

On 11/16/06, Eric Hodel <drbrain@segment7.net> wrote:

[#9604] #ancestors never includes the singleton class (inconsistent) — <noreply@...>

Bugs item #6820, was opened at 2006-11-22 08:49

12 messages 2006/11/22
[#9618] Re: [ ruby-Bugs-6820 ] #ancestors never includes the singleton class (inconsistent) — Yukihiro Matsumoto <matz@...> 2006/11/25

Hi,

[#9629] Re: [ ruby-Bugs-6820 ] #ancestors never includes the singleton class (inconsistent) — Sylvain Joyeux <sylvain.joyeux@...4x.org> 2006/11/27

> It is supposed to. Singleton classes (or eigenclasses, if you want to

Re: Ruby performance improvements

From: "Michael Selig" <michael.selig@...>
Date: 2006-11-09 01:50:02 UTC
List: ruby-core #9490
On Thu, 09 Nov 2006 10:56:15 +1100, Yukihiro Matsumoto  
<matz@ruby-lang.org> wrote:

> Hi,
>
> In message "Re: Ruby performanmce improvements"
>     on Wed, 8 Nov 2006 14:53:38 +0900, "Michael Selig"  
> <michael.selig@fs.com.au> writes:
>
> |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.
>
> Show us the code.  I'd like to merge it if it doesn't break anything.
>
> 							matz.

No problem, they are attached.

A few points:

- I extended the "noex" field to include a couple of new flags for each  
method. As a result I found the use of "noex" & "NOEX_*" in the code  
confusing, so I decided to change NOEX_* => METH_* & noex => flags, which  
makes the code more readable. This causes quite a few code mods.

- In order to tell ruby which CFUNC methods are loops, so we can optimize  
for them, I extended the rb_define_method() function and added (Windows  
SDK style :-) rb_define_method_ex() which allows the programmer to pass  
optional flags. You need to pass METH_LOOP if you want the loop  
optimization to happen. I wish there was some "automatic" way for this to  
happen, but I couldn't think of one. If you don't pass "METH_LOOP" it  
should execute as previously. If you need a frame to be allocated for a  
method (there are a couple of these), you can set METH_NEEDFRAME.

- There is one type of CFUNC method which I have not got working properly  
with my code which suppresses frame allocation - ones which call  
rb_super(). I have done a real kludge here - I did a GREP for these  
methods, and found that only "initialize" CFUNC methods ever seem to call  
rb_super(). So I have hardcoded in rb_add_method() code to set the  
METH_NEEDFRAME flag for all "initialze" methods :-(

- There are a few parts where I wasn't 100% sure what I was doing was OK -  
I put in a few comments at those spots.

Is there a comprehensive test suite that I can make sure I haven't broken  
anything? It certainly runs everything in "sample", as well as my own  
stuff.

Mike

Attachments (1)

ruby-1.8.4-diffs (114 KB, text/x-diff)

In This Thread