@AoH = map{ a=>1, b=>2, c=>3 }, 1 .. 3e6;; say total_size( \@AoH );; 936000209 ##```## bless \$_, 'OO' for @AoH;; say total_size( \@AoH );; 936000209 ##``````## sub OO::a{ \$_[0]->{a}=\$_[1] if defined \$_[1]; \$_[0]->{a} };; \$t = time; \$_->a( \$_->a() +1 ) for @AoH; say time - \$t;;; 4.60931897163391 ##``````## \$t = time; ++\$_->{a} for @AoH; say time() - \$t;; 0.931627988815308 ##``````## sub OO::get_a{ \$_[0]->{a} }; sub OO::set_a{ \$_[0]->{a} = \$_[1] };; sub OO::get_b{ \$_[0]->{b} }; sub OO::set_b{ \$_[0]->{b} = \$_[1] };; sub OO::get_c{ \$_[0]->{c} }; sub OO::set_c{ \$_[0]->{c} = \$_[1] };; sub OO::adjust_a{ \$_[0]->set_a( \$_[0]->get_a() + 1 ) };; \$t = time; \$_->adjust_a() for @AoH; say time() - \$t;; 4.95501685142517 ##``````## sub OO::get_a{ my( \$o ) = @_; \$o->{a} }; sub OO::set_a{ my( \$o, \$v ) = @_; \$o->{a} = \$v };; sub OO::get_b{ my( \$o ) = @_; \$o->{b} }; sub OO::set_b{ my( \$o, \$v ) = @_; \$o->{b} = \$v };; sub OO::get_c{ my( \$o ) = @_; \$o->{c} }; sub OO::set_c{ my( \$o, \$v ) = @_; \$o->{c} = \$v };; sub OO::adjust_a{ my( \$o ) = @_; \$o->set_a( \$o->get_a() + 1 ) };; \$t = time; \$_->adjust_a() for @AoH; say time() - \$t;; 6.20793199539185 ##``````## sub OO::get_a{ my( \$o ) = @_; die unless ref( \$o ) eq 'OO'; \$o->{a} }; sub OO::set_a{ my( \$o, \$v ) = @_; die unless ref( \$o ) eq 'OO'; die unless looks_like_number( \$v ); \$o->{a} = \$v };; sub OO::get_b{ my( \$o ) = @_; die unless ref( \$o ) eq 'OO'; \$o->{b} }; sub OO::set_b{ my( \$o, \$v ) = @_; die unless ref( \$o ) eq 'OO'; die unless looks_like_number( \$v ); \$o->{b} = \$v };; sub OO::get_c{ my( \$o ) = @_; die unless ref( \$o ) eq 'OO'; \$o->{c} }; sub OO::set_c{ my( \$o, \$v ) = @_; die unless ref( \$o ) eq 'OO'; die unless looks_like_number( \$v ); \$o->{c} = \$v };; \$t = time; \$_->adjust_a() for @AoH; say time() - \$t;; 8.23622608184814 ##``````## use Moose; ... ```