#!/usr/bin/perl use strict; use warnings; use Devel::Size qw 'total_size'; my $size = 100_000; my (@name1, @name2, @percent); my @big; sub r_name { # Make a random name. my $r = ""; $r .= ('a' .. 'z')[rand 26] for 1 .. 3 + rand(5); return $r; } for (1 .. $size) { my $name1 = r_name; my $name2 = r_name; my $perc = rand(100); push @name1, $name1; push @name2, $name2; push @percent, $perc; push @big, {name1 => $name1, name2 => $name2, percent => $perc}; } my $size_3 = total_size(\@name1) + total_size(\@name2) + total_size(\@percent); my $size_1 = total_size(\@big); printf "Three arrays: %10d (%6.2f)\n", $size_3, $size_3 / $size; printf "One structure: %10d (%6.2f)\n", $size_1, $size_1 / $size; __END__ Three arrays: 9573279 ( 95.73) One structure: 23724662 (237.25)