[#89088] More questions about =~ — GGarramuno@... (GGarramuno)

irb(main):006:1* class String

14 messages 2004/01/01

[#89119] Loop/Iterator questions — GGarramuno@... (GGarramuno)

1) Is there anything like Perl's continue block available? This is

15 messages 2004/01/02

[#89189] Best way to send mail in ruby — Bauduin Raphael <rb@...>

Hi,

11 messages 2004/01/03

[#89193] Simple Ruby DB apps/programs ... — Useko Netsumi <usenets@...>

I was wondering if there are some example of small Ruby(1.8.1) Database

14 messages 2004/01/03

[#89261] class Time doesn't pass year 2038? — Jean-Baptiste <temuphaey0@...>

15 messages 2004/01/05

[#89339] Compression (besides Huffman) and Ruby — "Josef 'Jupp' SCHUGT" <jupp@...>

Hi!

14 messages 2004/01/07

[#89367] Database applications and OOness — Tim Bates <tim@...>

People,

63 messages 2004/01/07
[#89455] Re: Database applications and OOness — "dhtapp" <dhtapp@...> 2004/01/08

I've been watching this thread with a great deal of interest. I'm

[#89456] block delimiting — Pete Yadlowsky <pmy@...> 2004/01/08

[#89465] Re: block delimiting — Austin Ziegler <austin@...> 2004/01/08

On Fri, 9 Jan 2004 04:33:15 +0900, Pete y wrote:

[#89453] ruby 1.8.1 windows installer — KONTRA Gergely <kgergely@...>

Hi!

26 messages 2004/01/08
[#89716] Re: ruby 1.8.1 windows installer — intc_ctor@... (Phil Tomson) 2004/01/12

>

[#89860] Re: ruby 1.8.1 windows installer — Alan Davies <NOSPAMcs96and@...> 2004/01/14

> Since the first edition of the Pickaxe book didn't exactly fly off the

[#89460] Re: block delimiting — "Mike Wilson" <wmwilson01@...>

21 messages 2004/01/08

[#89590] regex to NOT match? — Ruby Baby <ruby@...>

Sorry it seems like the smallest thing, but I'm stuck on this.

16 messages 2004/01/10

[#89611] Converting a string to an array of tokens — "John W. Long" <ws@...>

Is there a fast way to convert a string into a list of tokens?

17 messages 2004/01/11

[#89672] faster integer arithmetics & arbitrary precision floating number — David Garamond <lists@...6.isreserved.com>

1. Is there a way in Ruby to speed up 32bit integer arithmetics (only

43 messages 2004/01/12
[#89686] Re: faster integer arithmetics & arbitrary precision floating number — Ara.T.Howard@... 2004/01/12

On Tue, 13 Jan 2004, David Garamond wrote:

[#89709] Re: faster integer arithmetics & arbitrary precision floating number — Charles Mills <boson@...> 2004/01/12

What abouts Rubys design would make integer arithmetic slower than integer

[#89710] Re: faster integer arithmetics & arbitrary precision floating number — Dave Thomas <dave@...> 2004/01/12

[#89711] Re: faster integer arithmetics & arbitrary precision floating number — Charles Mills <boson@...> 2004/01/12

On Tue, 13 Jan 2004, Dave Thomas wrote:

[#89718] Getting the tail of a list? — Carsten Eckelmann <careck@...42.com>

Hi everybody,

19 messages 2004/01/12

[#89796] Ruby OS mentioned on /. — intc_ctor@... (Phil Tomson)

http://developers.slashdot.org/developers/04/01/13/0123250.shtml?tid=185&tid=190

20 messages 2004/01/13
[#89805] Re: Ruby OS mentioned on /. — Paul William <maillist@...> 2004/01/13

./ normally does not have vaporware... are a bunch of ruby (a very high

[#89806] Re: Ruby OS mentioned on /. — "Zach Dennis" <zdennis@...> 2004/01/13

Somehow i have this strange feeling that not all ruby peeps are strictly

[#89975] drb, firewall, ssh tunneling, and yield — Joel VanderWerf <vjoel@...>

14 messages 2004/01/16
[#89976] Re: drb, firewall, ssh tunneling, and yield — Nathaniel Talbott <nathaniel@...> 2004/01/16

On Jan 15, 2004, at 19:10, Joel VanderWerf wrote:

[#90013] Fighting Ruby's bad fame — gabriele renzi <surrender_it@...1.vip.ukl.yahoo.com>

Hi gurus and nubys,

42 messages 2004/01/16
[#90097] Re: Fighting Ruby's bad fame — ptkwt@... (Phil Tomson) 2004/01/18

In article <af53b0ba.0401171921.7cf9b9b7@posting.google.com>,

[#90023] Installing a program Unix-like — Malte Milatz <malteDELETETHIS@...>

Users of Linux, FreeBSD etc. are used to downloading an archive,

13 messages 2004/01/16

[#90077] long expression syntax — rick.hu@... (Rick Hu)

why do I get a syntax error for

13 messages 2004/01/17

[#90086] is Ruby the right language for these projects? — Ruby Baby <ruby@...>

Please forgive my self-centered question. I've been learning all about Ruby

16 messages 2004/01/18

[#90139] segfaults on mandrake... — Ferenc Engard <ferenc@...>

Hello,

16 messages 2004/01/18

[#90200] regex help — Chris Morris <chrismo@...>

I need a re such that:

18 messages 2004/01/19

[#90228] Re: New to Python: my impression v. Perl/Ruby — ptkwt@... (Phil Tomson)

In article <mailman.493.1074484056.12720.python-list@python.org>,

36 messages 2004/01/20
[#90292] Re: New to Python: my impression v. Perl/Ruby — Ville Vainio <ville.spamstermeister.vainio@...> 2004/01/20

>>>>> "Phil" == Phil Tomson <ptkwt@aracnet.com> writes:

[#90294] Re: New to Python: my impression v. Perl/Ruby — "Zach Dennis" <zdennis@...> 2004/01/20

Ville>Though "sending messages" to int literals is a syntax error.

[#90332] Re: New to Python: my impression v. Perl/Ruby — GGarramuno@... (GGarramuno) 2004/01/21

"Zach Dennis" <zdennis@mktec.com> wrote in message news:<AKEKIKLMCFIHPEAHKAAICEOHHFAA.zdennis@mktec.com>...

[#90333] Re: New to Python: my impression v. Perl/Ruby — Gregory Millam <walker@...> 2004/01/21

Received: Wed, 21 Jan 2004 16:59:59 +0900

[#90317] Re: Proposal for programming language of the year — "Volkmann, Mark" <Mark.Volkmann@...>

I think one of the main points of learning a new language each year is that

18 messages 2004/01/21

[#90354] Modules as namespace — gm@... (George Moschovitis)

Hello everyone,

16 messages 2004/01/21

[#90405] Very basic Ruby docs/books/tutorial? — Robert Feldt <feldt@...>

Hello,

12 messages 2004/01/22

[#90472] Ruby/Extensions v0.3 released — Gavin Sinclair <gsinclair@...>

A new version of Ruby/Extensions, a suite of useful methods added to

17 messages 2004/01/23

[#90505] Why is to_a going to be obsolete? — Patrick Bennett <patrick.bennett@...>

I find it immensely useful when dealing with arrays to be able to

25 messages 2004/01/23
[#90507] Re: Why is to_a going to be obsolete? — Gennady <gfb@...> 2004/01/23

Patrick Bennett wrote:

[#90510] Re: Why is to_a going to be obsolete? — Patrick Bennett <patrick.bennett@...> 2004/01/23

Hmmm, thanks, but it's a bit 'non-obvious' to casual Ruby programmers

[#90512] Re: Why is to_a going to be obsolete? — Gennady <gfb@...> 2004/01/23

[#90524] Re: Why is to_a going to be obsolete? — "T. Onoma" <transami@...> 2004/01/23

On Friday 23 January 2004 06:43 pm, Gennady wrote:

[#90598] perl bug File::Basename and Perl's nature — xah@... (Xah Lee)

Just bumped into another irresponsibility in perl.

19 messages 2004/01/25

[#90667] ruby-math and "why is ** not abelian?" — vanjac12@... (Van Jacques)

I was reading the 1st thread in the ruby-math discussion at

11 messages 2004/01/26

[#90750] choosing ruby? — Piergiuliano Bossi <p_bossi_AGAINST_SPAM@...>

We are on the way to start a new project, a web application with a bunch

20 messages 2004/01/27

[#90756] Editor — Safran von Twesla <me@...>

Hi,

20 messages 2004/01/27

[#90770] newbee question about "missing" hash methods +, += and << — benny <linux@...>

Hi,

25 messages 2004/01/27

[#90913] vimrc for Ruby or rubytidy — Theodore Knab <tjk@...>

Does someone have a '.vimrc' file they will share

17 messages 2004/01/29
[#90914] Re: vimrc for Ruby or rubytidy — "Gavin Sinclair" <gsinclair@...> 2004/01/29

> Does someone have a '.vimrc' file they will share

[#90971] time comparison — tony summerfelt <snowzone5@...>

i want to parse and trim a log file. the date format log file looks like:

13 messages 2004/01/29

[#91005] Ruby and Perl Integration — "John W. Long" <ws@...>

All this talk about RJNI has gotten me thinking. Has anyone attempted to

17 messages 2004/01/30
[#91007] Re: Ruby and Perl Integration — Thomas Adam <thomas_adam16@...> 2004/01/30

--- "John W. Long" <ws@johnwlong.com> wrote:

[#91056] principle of most suprise — tony summerfelt <snowzone5@...>

gah, ruby is doing it to me again:

31 messages 2004/01/30

[#91071] Accesing to private attributes — "Imobach =?iso-8859-15?q?Gonz=E1lez_Sosa?=" <imodev@...>

Hi all,

14 messages 2004/01/30

[#91088] flip flop operator and assignment — ptkwt@... (Phil Tomson)

I'm working on the pattern matching section for

25 messages 2004/01/31

[#91089] No difference between .. and ... flip/flop operators? — ptkwt@... (Phil Tomson)

50 messages 2004/01/31

[#91099] Ruby 1.8.1 REXML performance — Steven Jenkins <steven.jenkins@...>

I have a script that uses REXML to stream parse an XML file and load a

27 messages 2004/01/31

[#91104] graphics lib? — Alwin Blok <alwinblok@...>

Hello,

38 messages 2004/01/31
[#91262] Re: graphics lib? — Simon Strandgaard <neoneye@...> 2004/02/02

On Sun, 01 Feb 2004 16:18:50 -0600, Charles Comstock wrote:

[#91362] Re: graphics lib? — Charles Comstock <cc1@...> 2004/02/03

Simon Strandgaard wrote:

Re: faster integer arithmetics & arbitrary precision floating number

From: GGarramuno@... (GGarramuno)
Date: 2004-01-12 19:36:40 UTC
List: ruby-talk #89695
David Garamond <lists@zara.6.isreserved.com> wrote in message news:<4002C471.1070507@zara.6.isreserved.com>...

> 
> then have you factored out compilation overhead? I would wild-guess that 
> Perl is slightly slower than Ruby, due to its complex syntaxes?

No, Perl is much faster than ruby for these sort of operations.  Where
Perl's speed suffers is in its OO (lots of nested classes can bring
Perl down to its knees not to mention make the code very hard to deal
with).

Python2.2 is now an extremely good compromise for both, as it has
great performance for simple things and it scales very well on complex
projects.  But I cannot stand its syntax, personally.

Ruby is, for these type of operations, quite slow.  It is somewhat
akin to the old python1.5 overall.  Ruby is in my opiniong the
language that has the nicest syntax of them all, but both its speed
and library base is not on par with others.


In the python mailing list someone recently sent out a mail with a
silly benchmark like that (which I ported to perl and ruby, too).
"Nine Language Performance Round-up: Benchmarking Math & File I/O"
http://www.osnews.com/story.php?news_id=5602

This benchmark is not that great as it does not measure that many
other areas of a language that you use in real code, but I guess it is
okay if you want to get an idea of arithmetic speed.

The top performer on that benchmark from the scripting languages is
C#.  And I was quite surprised that microsoft did something decent
this time around (albeit C# is perhaps closer to C++ in philosophy and
syntax than to a scripting language such as perl, ruby or python).

On the machine I am on (XP) (and reducing the # of iterations of each
one), I got:

C#: 560 milliseconds
Perl5.8.1: 5.08 sec.
Python2.2.3: 6.07115513285 sec.
Ruby1.8: 14.170000 sec.

Indeed, Ruby seems particularly bad with normal integer arithmetic.

Here's the not very scientific code for perl and ruby I used which I
ported from python (you can get the rest from the guy's website to
test).  Since ruby deals with int/longs/bignums transparently, I am
not sure the test below is a good example, thou of long behavior.  But
it does give you a rough idea where ruby stands in overall number
crunching performance.


#! /usr/bin/ruby

require "benchmark"
include Benchmark


intMax =    10000000000 # 1B
doubleMin = 10000000000.0 # 10B
doubleMax = 11000000000.0 # 11B
longMin =   10000000000 # 10B
longMax =   11000000000 # 11B
trigMax =   10000000.0 # 10M
ioMax =     1000000 # 1M

# I used these numbers to test as the orig. ones take too long
intMax =    10000000 # 1B
doubleMin = 10000000.0 # 10B
doubleMax = 11000000.0 # 11B
longMin =   10000000  # 10B
longMax =   11000000  # 11B
trigMax =   100000.0 # 10M
ioMax =     10000 # 1M


def intArithmetic(intMax)

    i = 1
    intResult = 1
    while i < intMax
        intResult = intResult - i
        i = i + 1
        intResult = intResult + i
        i = i + 1
        intResult = intResult * i
        i = i + 1
        intResult = intResult / i
        i = i + 1
    end
    print " i:", i, "\n"
    print " intResult:", intResult, "\n"
end


def doubleArithmetic(doubleMin, doubleMax)

    i = doubleMin
    doubleResult = doubleMin
    while i < doubleMax
        doubleResult = doubleResult - i
        i = i + 1.0
        doubleResult = doubleResult + i
        i = i + 1.0
        doubleResult = doubleResult * i
        i = i + 1.0
        doubleResult = doubleResult / i
        i = i + 1.0
    end
    print " i:", i, "\n"
    print " doubleResult:", doubleResult, "\n"
end


def longArithmetic(longMin, longMax)

    i = longMin
    longResult = longMin
    while i < longMax
        longResult = longResult - i
        i = i + 1
        longResult = longResult + i
        i = i + 1
        longResult = longResult * i
        i = i + 1
        longResult = longResult / i
        i = i + 1
    end
    print " i:", i, "\n"
    print " Result:", longResult, "\n"
end


def trig(trigMax)
    i = 1.0
    sine = 0.0
    cosine = 0.0
    tangent = 0.0
    logarithm = 0.0
    squareRoot = 0.0
    
    while i < trigMax
        sine = Math.sin(i)
        cosine = Math.cos(i)
        tangent = Math.tan(i)
        logarithm = Math.log10(i)
        squareRoot = Math.sqrt(i)
        i = i + 1.0
    end
    print " i:", i, "\n"
    print " sine:", sine, "\n"
    print " cosine:", cosine, "\n"
    print " tangent:", tangent, "\n"
    print " logarithm:", logarithm, "\n"
    print " squareRoot:", squareRoot, "\n"
end


def io(ioMax)
  fileName = "TestRuby.txt"
  myString = "abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefgh\n"

  linesToWrite = [myString]
  for i in 2..ioMax
    linesToWrite.push( myString )
  end

  file = File.open(fileName, 'w')
  file.puts(linesToWrite)
  file.close()
    
  file = File.open(fileName, 'r')
  readLines = file.readlines()
  file.close()
  print "write=",linesToWrite.length()
  print " read=",readLines.length()
end


# Main program begins here

puts "Start Ruby benchmark"

t = 0
benchmark("       " + CAPTION, 7, FMTSTR) do |x|
  t  = x.report("intArithmetic")    {  intArithmetic(intMax) }
  t += x.report("doubleArithmetic") {  doubleArithmetic(doubleMin,
doubleMax) }
  t += x.report("longArithmetic")   { longArithmetic(longMin, longMax)
}
  t += x.report("trig")             { trig(trigMax) }
  t += x.report("io")               { ioTime = io(ioMax) }
end

print "Total Ruby benchmark time:", t, "\n"
puts "End Ruby benchmark"


#####################For perl...
#! /usr/bin/perl
use Benchmark qw( timeit timestr );
use Math::Trig;  #for tan

my $intMax =    1000000000; # 1B
my $intMax =    10000000; # 1B
my $doubleMin = 10000000.0; # 10B
my $doubleMax = 11000000.0; # 11B
my $longMin =   10000000;  # 10B
my $longMax =   11000000;  # 11B
my $trigMax =   100000.0; # 10M
my $ioMax =     10000; # 1M

sub intArithmetic($)
{
    my ($intMax) = @_;

    my $i = 1;
    my $intResult = 1;
    while ($i < $intMax)
    {
        $intResult = $intResult - $i;
	$i++;
        $intResult = $intResult + $i;
        $i++;
        $intResult = $intResult * $i;
        $i++;
        $intResult = int $intResult / $i;
        $i++;
    }
    print " i:", $i, "\n";
    print " intResult:", $intResult, "\n";
}


sub doubleArithmetic($$)
{
    my ($doubleMin, $doubleMax) = @_;

    my $i = $doubleMin;
    my $doubleResult = $doubleMin;
    while ($i < $doubleMax)
    {
        $doubleResult = $doubleResult - $i;
	$i = $i + 1.0;
        $doubleResult = $doubleResult + $i;
	$i = $i + 1.0;
        $doubleResult = $doubleResult * $i;
	$i = $i + 1.0;
        $doubleResult = $doubleResult / $i;
	$i = $i + 1.0;
    }
    print " i:", $i, "\n";
    print " doubleResult:", $doubleResult, "\n";
}


sub longArithmetic
{
    my ($longMin, $longMax) = @_;

    my $i = $longMin;
    my $longResult = $longMin;
    while ($i < $longMax)
    {
	$longResult = $longResult - $i;
	$i = $i + 1;
	$longResult = $longResult + $i;
	$i = $i + 1;
	$longResult = $longResult * $i;
	$i = $i + 1;
	$longResult = $longResult / $i;
	$i = $i + 1;
    }
    print " i:", $i, "\n";
    print " longResult:", $longResult, "\n";
}

sub log10 { log($_[0])/log(10); }

sub trig($)
{
    my ($trigMax) = @_;
    my $i = 1.0;
    my $sine = 0.0;
    my $cosine = 0.0;
    my $tangent = 0.0;
    my $logarithm = 0.0;
    my $squareRoot = 0.0;
    
    while ($i < $trigMax)
    {
        $sine = sin($i);
        $cosine = cos($i);
        $tangent = tan($i);
        $logarithm = log10($i);
        $squareRoot = sqrt($i);
        $i = $i + 1.0;
    }
    print " i:", $i, "\n";
    print " sine:", $sine, "\n";
    print " cosine:", $cosine, "\n";
    print " tangent:", $tangent, "\n";
    print " logarithm:", $logarithm, "\n";
    print " squareRoot:", $squareRoot, "\n";
}


sub io($)
{
    my ($ioMax) = @_;
    my $fileName = "TestPerl.txt";
    my $myString = "abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefgh\n";
    my $linesToWrite = $myString;
    for $i ( 1..$ioMax )
    {
	$linesToWrite .= $myString;
    }

    open(FILE, ">".$fileName);
    print FILE $linesToWrite;
    close(FILE);
    
    open(FILE, "<".$fileName);
    my @readLines = <FILE>;
    print "length:",$#readLines,"\n";
    close(FILE);
}


# Main program begins here

print "Start Perl benchmark\n";



my $total= timeit( 1, sub
{
my $t = timeit( 1, sub{intArithmetic($intMax); } );
print "intArithmetic: ",timestr($t),"\n";
$t = timeit( 1, sub{doubleArithmetic($doubleMin,$doubleMax); } );
print "doubleArithmetic: ",timestr($t),"\n";
$t = timeit( 1, sub{doubleArithmetic($longMin,$longMax); } );
print "longArithmetic: ",timestr($t),"\n";
$t = timeit( 1, sub{trig($trigMax); } );
print "trig: ",timestr($t),"\n";
$t = timeit( 1, sub{io($ioMax); } );
print "io: ",timestr($t),"\n";
}
);

print "total=",timestr($total),"\n";

print "End Perl benchmark";

In This Thread