Results don't look really good.
- Parrot consumes ever increasing memory, so it can't even run up to 100000
- its slow (unoptimized build for now - but that doesn't matter yet)
- Parrot is leaking a vtable per new class and worse per new instance
- I'm currently trying to avoid the vtable_clone for new objects with some success - I still have some test errors related to can or type.
Are these 2 programs somehow equivalent?
leo
$ cat o1.pl #! perl -w use strict;
for my $i (1 .. 100000) { my $o = new Foo(); } my $o = new Foo(); print $o->[0], "\n";
package Foo;
sub new { my $self = ref $_[0] ? ref shift : shift; return bless [ 10, 20 ], $self; } 1;
$ cat o1.pasm
newclass P1, "Foo" find_global P2, "init" store_global "Foo", "__init", P2 addattribute P1, ".i" addattribute P1, ".j"
set I10, 0 set I11, 20000 loop: find_type I1, "Foo" new P3, I1 inc I10 #sleep 0.0001 lt I10, I11, loop
find_type I1, "Foo" new P3, I1 classoffset I0, P3, "Foo" getattribute P2, P3, I0 print P2 print "\n" end
.pcc_sub init: classoffset I0, P2, "Foo" new P10, .PerlInt set P10, 10 setattribute P2, I0, P10 inc I0 new P10, .PerlInt set P10, 20 setattribute P2, I0, P10 invoke P1