#!/usr/bin/perl
use strict;
use warnings;
my @printables = map chr, 33 .. 126;
# random string 30 characters long
sub randstr { join '', map { $printables[rand(@printables)] } 1..30 }
use Devel::Size qw(size total_size);
sub commas {
my $str = ''.reverse shift;
return scalar reverse join ',', grep length, split /(.{3})/, $str
}
my %hash = ( randstr => randstr );
for (0..5) {
my $count = scalar keys %hash;
print commas($count), " elements: ", commas(total_size\%hash), " bytes\n";
for (1..9 * $count) {
my $s = randstr;
$hash{$s} = randstr;
}
}
my $count = scalar keys %hash;
print commas($count), " elements: ", commas(total_size\%hash), " bytes\n";
####
1 elements: 176 bytes
10 elements: 1,171 bytes
100 elements: 11,249 bytes
1,000 elements: 111,133 bytes
10,000 elements: 1,135,573 bytes
100,000 elements: 11,224,325 bytes
1,000,000 elements: 111,194,341 bytes
##
##
$"=$,,$_=q>|\p4<6 8p
.q>.<4-KI;$,
.=pack'N*',"@{[unpack'C*',$_]
}"for split/;$_=$,,y[A-Z a-z]
{}cd;print lc