Dan Sugalski:
> 2) Parrot's Array and SArray values all accept mixed-type data, which 
> perl's arrays do *not* do, and as such have some extra speed hits 
> that perl arrays don't.

What do you mean?
Perl's arrays do indeed accept mixed data types (see example below).

$ cat addit2.pl
#!/usr/bin/perl
#
# addit2.pl
#
use strict;
sub varargs_adder {
    my $sum = 0;
    for (my $a = $#_; $a >= 0; --$a) {
        $sum += $_[$a];
    }
    return $sum
}
my $result = 0;
my @args;
$args[0] = 1000;
$args[1] = 7.100;
$args[2] = 87;
$args[3] = "3.87";
$args[4] = "21000000";
for (my $x = 500000; $x >= 0; --$x) {
    $result = varargs_adder(@args);
}
print "$result\n";

$ time perl addit2.pl
21001097.97

real    0m2.825s
user    0m2.843s
sys     0m0.015s

$ cat f6.pasm 
#
# f6.pasm
#
# array element arguments are created before the loop
#
_main:
        new P5, .SArray
        set P5, 5
        push P5, 1000
        push P5, 7.100
        push P5, 87
        push P5, "3.87"
        push P5, "21000000"
        set I9, 500000
AGAIN:
        dec I9
        lt I9, 0, FIN
        bsr _varargs_adder
        branch AGAIN
FIN:
        print N0
        print "\n"
        end
_varargs_adder:
        new P2, .PerlNum
        assign P2, 0
        set I1, P5
LOOP:
        dec I1
        lt I1, 0, DONE
        set P1, P5[I1]
        add P2, P2, P1
        branch LOOP
DONE:
        set N0, P2
        ret


$ time parrot f6.pasm
21001097.970000

real    0m3.925s
user    0m3.936s
sys     0m0.015s


$ time parrot -j f6.pasm
21001094.100000     (note: wrong result and slower with jit)

real    0m11.999s
user    0m12.015s
sys     0m0.000s



__________________________________
Do you Yahoo!?
New Yahoo! Photos - easier uploading and sharing.
http://photos.yahoo.com/

Reply via email to