[#18974] Perl/Python/Ruby common backend (Perl6) — ptkwt@...1.aracnet.com (Phil Tomson)

There is a thread about using .NET's CLR as a backend for Ruby, but how

17 messages 2001/08/01

[#19064] ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — David Alan Black <dblack@...>

17 messages 2001/08/03
[#19184] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — John Carter <john.carter@...> 2001/08/06

On Fri, 3 Aug 2001, David Alan Black wrote:

[#19185] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — David Alan Black <dblack@...> 2001/08/06

Hello --

[#19186] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — John Carter <john.carter@...> 2001/08/06

On Mon, 6 Aug 2001, David Alan Black wrote:

[#19125] My 1st look @ ruby: No prototypes and problem with String#gsub — stesch@... (Stefan Scholl)

My first ruby program:

23 messages 2001/08/04

[#19192] Some remarks from a nembie in Ruby — Renaud HEBERT <renaud.hebert@...>

After having read the book "Programming Ruby: The Pragmatic Programmer's

38 messages 2001/08/06

[#19269] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — ptkwt@...1.aracnet.com (Phil Tomson)

In article <72X97.12093$9i1.972452@e420r-atl1.usenetserver.com>,

50 messages 2001/08/07
[#19349] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — Mathieu Bouchard <matju@...> 2001/08/08

[#19456] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — Harry Ohlsen <harryo@...> 2001/08/09

Ned Konz wrote:

[#19451] Re: Help! I'm still confused about threadin g in the ML — "Morris, Chris" <chris.morris@...>

> Is there an Outlook option to turn on In-Reply-To or References

14 messages 2001/08/09
[#19453] Re: Help! I'm still confused about threadin g in the ML — Dave Thomas <Dave@...> 2001/08/09

"Morris, Chris" <chris.morris@snelling.com> writes:

[#19506] the way class variables work — David Alan Black <dblack@...>

Hello --

51 messages 2001/08/10
[#19511] Re: the way class variables work — Chris Uzdavinis <chris@...> 2001/08/11

David Alan Black <dblack@candle.superlink.net> writes:

[#19524] order and freedom in Ruby (was: Re: Re: the way class variables work) — David Alan Black <dblack@...> 2001/08/11

Hello --

[#19517] Why not?: Assigning to self — furufuru@... (Ryo Furue)

Hi there,

55 messages 2001/08/11
[#19689] Re: Why not?: Assigning to self — Ron Jeffries <ronjeffries@...> 2001/08/14

On 13 Aug 2001 20:59:54 -0700, furufuru@ccsr.u-tokyo.ac.jp (Ryo Furue)

[#19694] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 05:09 am, Ron Jeffries wrote:

[#19695] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19696] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 07:51 am, you wrote:

[#19697] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19700] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 08:27 am, you wrote:

[#19701] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19703] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:05 am, Guy Decoux wrote:

[#19704] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19708] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:27 am, you wrote:

[#19709] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19713] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:45 am, you wrote:

[#19750] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/15

Hi,

[#19819] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/15

On Tuesday 14 August 2001 08:14 pm, matz wrote:

[#19852] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/16

Hi,

[#19857] Re: Why not?: Assigning to self — "Florian G. Pflug" <fgp@...> 2001/08/16

On Thu, Aug 16, 2001 at 11:05:59AM +0900, Yukihiro Matsumoto wrote:

[#19858] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/16

Hi,

[#19867] Re: Why not?: Assigning to self — "Pit Capitain" <pit@...> 2001/08/16

Just a followup at (my) current end of the thread:

[#19550] Forced garbage collection — Lars Christensen <larsch@...>

14 messages 2001/08/11
[#19562] Re: Forced garbage collection — "Nat Pryce" <nat.pryce@...13media.com> 2001/08/12

From: "Lars Christensen" <larsch@cs.auc.dk>

[#19551] /.ed again — Tobias Reif <tobiasreif@...>

Ruy gets slasdotted again ;)

19 messages 2001/08/11

[#19650] Ruby Newbie mailing list — Michael Pence <mikepence@...>

Hello all.

14 messages 2001/08/13
[#19656] RE: Ruby Newbie mailing list — "Louis Brothers" <lcb134@...> 2001/08/13

We had a similar discussion on the OmniWeb Objective-C mailing list not to

[#19659] Re: Ruby Newbie mailing list — Michael Pence <mikepence@...> 2001/08/13

I appreciate your references to Objectionable-C ;-)

[#19685] Compiling Ruby with cygwin and Tk support — Manuel Zabelt <ng@...>

Hello!

13 messages 2001/08/14

[#19718] General (GUI/license) questions — Ryan Tarpine <rtarpine@...>

First: Kero commented in the description of his new Ruby Agenda program

18 messages 2001/08/14

[#19755] "new" returning nil: how to report the failure of object creation — furufuru@... (Ryo Furue)

Hi there,

14 messages 2001/08/15

[#19758] The GUI poll is in, and the results are surprising — Dave Thomas <Dave@...>

40 messages 2001/08/15
[#19774] Re: The GUI poll is in, and the results are surprising — Lars Christensen <larsch@...> 2001/08/15

On Wed, 15 Aug 2001, Dave Thomas wrote:

[#19784] Re: The GUI poll is in, and the results aresurprising — "Lyle Johnson" <ljohnson@...> 2001/08/15

> Please don't forget what Ruby is all about in this discussion! I think

[#19824] Ruby GUI — "Hal E. Fulton" <hal9000@...>

The concept of a new GUI is somewhat appealing,

16 messages 2001/08/15

[#20033] Ruby Article — Joshua Drake <jd.nospam@...>

Hello,

38 messages 2001/08/20

[#20127] Another Possible RCR - Wrappers via Mixins — Stephen White <spwhite@...>

The main difference between mix-ins and multiple inheritence is (to my understanding) that parent classes do not call child code, but mix-ins do.

15 messages 2001/08/22

[#20135] Bruce Eckel's criticism of Ruby — Ned Konz <ned@...>

Python.org links to http://www.mindview.net/Etc/notes.html#Ruby , saying

24 messages 2001/08/22

[#20183] ++ Operator — kamphausen@... (SKa)

Dear Community,

35 messages 2001/08/23
[#20234] Re: ++ Operator — Dave Thomas <Dave@...> 2001/08/24

matz@ruby-lang.org (Yukihiro Matsumoto) writes:

[#20236] Re: ++ Operator — matz@... (Yukihiro Matsumoto) 2001/08/24

Hi,

[#20209] In Ruby 0 is true but nil is false.. or how to shoot yourself?.. — Guillaume Cottenceau <gc@...>

I have a simple Audio-CD database (using CSV format). I was writing a

11 messages 2001/08/23

[#20254] File.readline(s) — Michael Husmann <michael.husmann@...>

I am reading a 55MB ASCII file by using File.readline(s) which takes on

14 messages 2001/08/24

[#20303] New Windows InstallShield version of Ruby — Andrew Hunt <andy@...>

19 messages 2001/08/24

[#20307] Backwards language — "Sean Middleditch" <elanthis@...>

Greetings,

30 messages 2001/08/24

[ruby-talk:19143] Re: Endianness and integer indexing

From: eric@... (Eric Lee Green)
Date: 2001-08-04 16:32:06 UTC
List: ruby-talk #19143
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Sat, 04 Aug 2001 08:01:33 GMT, Harry Ohlsen <harryo@zip.com.au> wrote:
>> Oh, okay. I've noticed an interesting thing about [] though -- it is
>> almost as slow as doing a " % 2" on the number!
>
>Fortunately, I'll only ever be playing with relatively small numbers, so 
>the speed isn't an issue for me.  However, it sounds like there's an 
>opportunity for a cleanup on the [] method for BigNum.
>
>Strangely, I just tried writing a tiny two line routine to get the parity 
>and it performs only slightly better than using Ruby's & and is still not 
>as fast as [], which I find bizarre, since it's a cut-down version of the 
>code for [] !!
>
>Oh well. Someone's bound to come back and tell you how to make things 
>faster.

I spent more time thinking on the subject last night, and I think that
what I am running into is memory allocation overhead. [] itself runs
in constant time regardless of the size of the integer, a 128-bit
integer runs [] in the same amount of time as a 2048-bit integer, so
it appears that [] itself is not doing something stupidly inefficient.
30,000 >> calls ought to run faster than 6,000 % calls when we're
talking about 1024-bit numbers when we are talking about the two
obvious implementations for gcd (Stein's binary gcd
algo. vs. Euclidean gcd algo.), but the 6,000 % calls actually run
close to 4 times faster. Clearly ruby is being swamped by something
other than the cost of the operation itself. My suspicion is that it is
memory allocation overhead. Hmm...

ruby -r profile -e 'require "modexp.rb"' \
     -e "a=128.random ; 30000.times { a.clone } "
 time   seconds   seconds    calls  ms/call  ms/call  name
 53.23     2.14      2.14        2  1070.00  2010.00  Fixnum#times
 46.77     4.02      1.88    30001     0.06     0.06  Numeric#clone
....
Yep, it appears that creating and destroying bigints is a very expensive
operation in Ruby. 

[eric@localhost ruby]$ ruby -r profile -e 'require "modexp.rb"' \
  -e "a=128.random ; 30000.times { a % 5 } "
  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 69.98     3.17      3.17        2  1585.00  2265.00  Fixnum#times

shows that well. '%' on a 1024-bit number should take significant
time, but it is clear that it is being swamped (lost in the noise)
by the overhead of creating and destroying. The actual % took only 250ms,
the rest of that is Ruby overhead for creating and destroying the bignums.

[eric@localhost ruby]$ ruby -r profile -e 'require "modexp.rb"'\ 
 -e "a=128.random ; 30000.times { a[0] } "
  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 61.37     2.51      2.51        2  1255.00  2040.00  Fixnum#times
 37.65     4.05      1.54    30000     0.05     0.05  Bignum#[]

shows that [] itself is very fast, requiring only 40ms or so to
execute 30,000 times, but again is being swamped by the overhead of
creating and destroying objects. But [] is creating an integer, not
a Bignum :-(. 

[eric@localhost ruby]$ ruby -r profile -e 'require "modexp.rb"' \
   -e "a=128.random ; 30000.times { 5+1 } "
  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 78.83     3.24      3.24        2  1620.00  2050.00  Fixnum#times
 20.19     4.07      0.83    30000     0.03     0.03  Fixnum#+

This proves that the problem is the object creator/destructor, not the 
cost of the mathematical operations. So it appears that for 
anything that requires doing many operations, such as finding the greatest
common denominator using the Stein binary gcd algorithm, I will need to
move it into "C" entirely rather than implementing it in Ruby. 

This is nothing very new. I ran into this when I wrote the twofish-py
module for Python. Even allocating my blocks (string objects) 8K at a
time and encrypting blocks in 'C', Python's memory allocator limited
my performance to a max of 2mb/sec. When I re-wrote the stream
encrypter into "C" (using same low-level "C" routines, just finished
moving the block slinger into "C"), I managed over 100mb/sec.  I had
hoped that Ruby's memory allocator was significantly faster, but
perhaps I am running into limitations of the GNU 'libc' library, which
is not known for its excellent speed.

It appears that investigation of the object creator is warranted to
see if there is a way to speed up creation of objects :-(. 

Eric Lee Green         Web: http://www.badtux.org 
  GnuPG public key at http://badtux.org/eric/eric.gpg
    Free Dmitry Sklyarov! [ http://www.eff.org ]

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE7bB9L3DrrK1kMA04RAn/VAJ4uOJm82vcKOS60wAtULFmkV/AOrwCaAvrQ
mICp8QY+YkxlklxvzrkB50c=
=NY6T
-----END PGP SIGNATURE-----

In This Thread