use v5.16; use Benchmark qw(cmpthese); BEGIN { $ENV{PERL_TYPE_TINY_XS} = 0; } package Example::Native { use Moose; has numbers => ( is => 'rw', isa => 'ArrayRef[Str]', ); __PACKAGE__->meta->make_immutable; } package Example::TT { use Moose; use Types::Standard qw(ArrayRef Str); has numbers => ( is => 'rw', isa => ArrayRef[Str], ); __PACKAGE__->meta->make_immutable; } cmpthese -1, { native => q{ my $obj = Example::Native->new(numbers => []); $obj->numbers([0 .. $_]) for 1 .. 50; }, tt => q{ my $obj = Example::TT->new(numbers => []); $obj->numbers([0 .. $_]) for 1 .. 50; }, }; __END__ Rate native tt native 2511/s -- -45% tt 4525/s 80% --