[#6954] Why isn't Perl highly orthogonal? — Terrence Brannon <brannon@...>

27 messages 2000/12/09

[#7022] Re: Ruby in the US — Kevin Smith <kevinbsmith@...>

> Is it possible for the US to develop corporate

36 messages 2000/12/11
[#7633] Re: Ruby in the US — Dave Thomas <Dave@...> 2000/12/19

tonys@myspleenklug.on.ca (tony summerfelt) writes:

[#7636] Re: Ruby in the US — "Joseph McDonald" <joe@...> 2000/12/19

[#7704] Re: Ruby in the US — Jilani Khaldi <jilanik@...> 2000/12/19

> > first candidates would be mysql and postgressql because source is

[#7705] Code sample for improvement — Stephen White <steve@...> 2000/12/19

During an idle chat with someone on IRC, they presented some fairly

[#7750] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

Stephen White wrote:

[#7751] Re: Code sample for improvement — David Alan Black <dblack@...> 2000/12/20

Hello --

[#7755] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

David Alan Black wrote:

[#7758] Re: Code sample for improvement — Stephen White <steve@...> 2000/12/20

On Wed, 20 Dec 2000, Guy N. Hurst wrote:

[#7759] Next amusing problem: talking integers (was Re: Code sample for improvement) — David Alan Black <dblack@...> 2000/12/20

On Wed, 20 Dec 2000, Stephen White wrote:

[#7212] New User Survey: we need your opinions — Dave Thomas <Dave@...>

16 messages 2000/12/14

[#7330] A Java Developer's Wish List for Ruby — "Richard A.Schulman" <RichardASchulman@...>

I see Ruby as having a very bright future as a language to

22 messages 2000/12/15

[#7354] Ruby performance question — Eric Crampton <EricCrampton@...>

I'm parsing simple text lines which look like this:

21 messages 2000/12/15
[#7361] Re: Ruby performance question — Dave Thomas <Dave@...> 2000/12/15

Eric Crampton <EricCrampton@worldnet.att.net> writes:

[#7367] Re: Ruby performance question — David Alan Black <dblack@...> 2000/12/16

On Sat, 16 Dec 2000, Dave Thomas wrote:

[#7371] Re: Ruby performance question — "Joseph McDonald" <joe@...> 2000/12/16

[#7366] GUIs for Rubies — "Conrad Schneiker" <schneik@...>

Thought I'd switch the subject line to the subject at hand.

22 messages 2000/12/16

[#7416] Re: Ruby IDE (again) — Kevin Smith <kevins14@...>

>> >> I would contribute to this project, if it

17 messages 2000/12/16
[#7422] Re: Ruby IDE (again) — Holden Glova <dsafari@...> 2000/12/16

-----BEGIN PGP SIGNED MESSAGE-----

[#7582] New to Ruby — takaoueda@...

I have just started learning Ruby with the book of Thomas and Hunt. The

24 messages 2000/12/18

[#7604] Any corrections for Programming Ruby — Dave Thomas <Dave@...>

12 messages 2000/12/18

[#7737] strange border-case Numeric errors — "Brian F. Feldman" <green@...>

I haven't had a good enough chance to familiarize myself with the code in

19 messages 2000/12/20

[#7801] Is Ruby part of any standard GNU Linux distributions? — "Pete McBreen, McBreen.Consulting" <mcbreenp@...>

Anybody know what it would take to get Ruby into the standard GNU Linux

15 messages 2000/12/20

[#7938] Re: defined? problem? — Kevin Smith <sent@...>

matz@zetabits.com (Yukihiro Matsumoto) wrote:

26 messages 2000/12/22
[#7943] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

Kevin Smith <sent@qualitycode.com> writes:

[#7950] Re: defined? problem? — Stephen White <steve@...> 2000/12/22

On Fri, 22 Dec 2000, Dave Thomas wrote:

[#7951] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

On Fri, 22 Dec 2000, Stephen White wrote:

[#7954] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

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

[#7975] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

Hello --

[#7971] Hash access method — Ted Meng <ted_meng@...>

Hi,

20 messages 2000/12/22

[#8030] Re: Basic hash question — ts <decoux@...>

>>>>> "B" == Ben Tilly <ben_tilly@hotmail.com> writes:

15 messages 2000/12/24
[#8033] Re: Basic hash question — "David A. Black" <dblack@...> 2000/12/24

On Sun, 24 Dec 2000, ts wrote:

[#8178] Inexplicable core dump — "Nathaniel Talbott" <ntalbott@...>

I have some code that looks like this:

12 messages 2000/12/28

[#8196] My first impression of Ruby. Lack of overloading? (long) — jmichel@... (Jean Michel)

Hello,

23 messages 2000/12/28

[#8198] Re: Ruby cron scheduler for NT available — "Conrad Schneiker" <schneik@...>

John Small wrote:

14 messages 2000/12/28

[#8287] Re: speedup of anagram finder — "SHULTZ,BARRY (HP-Israel,ex1)" <barry_shultz@...>

> -----Original Message-----

12 messages 2000/12/29

[ruby-talk:6915] Re: Some performance issues

From: "Ben Tilly" <ben_tilly@...>
Date: 2000-12-07 21:35:47 UTC
List: ruby-talk #6915
Wayne Scott wrote:
>
>From: Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk>
[...]
>Another interesting view on how to represent a string that can be
>extened and concat'ed easily is rope in SGI's STL implimentation.
>
>http://www.sgi.com/Technology/STL/Rope.html

That looks neat!  Does it really work as well as the
advertising on the box says?

>Note these non-array versions will require alot of changes to Ruby
>internals. It also makes the RE engine much slower which is probably
>not a good idea for a scripting language.

It may not require nearly as many changes to do it as you
would think.  For several of Ruby's basic types (String,
Array, Hash, etc) provide modules (somewhat like Enumerable)
which list basic operations which can be used to create
your own classes that work just like the built-ins.  Then
to produce new classes with all of the scripting power of
the built-in you just create a class, mix-in the module,
and provide the required methods.

To make it easy make two of the required methods be to_str
and from_str.  Then the difficult bits in the module (like
REs) can be implemented by extracting a native Ruby string,
manipulating it, then converting back to the different
implementation.  So yes, an RE would be slow.  But the cost
is on the order of computing $' and $`.

This is 'tie' in Perl.  Except that what in Perl is
scattered around the internals could in Ruby be implemented
with little or no redesign of the internals.

A benefit of doing this work down the road is that some day
the following optimization could be used internally.  When
an RE matches instead of producing $' and $` by default, tie
the string matched, $', and $` so that any attempt to
change the string matched or access $' or $` will cause
$' and $` to be calculated.  Upon rematching all three ties
are thrown away anyways.

The idea is that a tied wrapper around a regular string
like this should be easy to produce and destroy.  Then
this lets you be lazy about producing $' and $`, which means
that if you don't use it you don't pay for it.  Good old
lazy evaluation. :-)

I mention this optimization not because I think it is a top
priority (though it would be nice) but because leaving the
door open for doing this some day may have a consequence I
am missing.  For instance is it hard to replace the current
object with an object of a different class?

For the record, Perl keeps track of a global flag.  If it
has seen $` or $' anywhere it then computes them on every
match.  Otherwise it doesn't.  I think the tie approach
I described is a much cleaner way to do the optimization.
OTOH a perfectly valid approach to optimization is to
provide efficient versions (like StringScanner) for those
who want them, and then feature-filled versions for those
who don't care.

But where clean designs can go hand in hand with good
algorithms, use them.

Cheers,
Ben
_____________________________________________________________________________________
Get more from the Web.  FREE MSN Explorer download : http://explorer.msn.com

In This Thread

Prev Next