#!/usr/bin/env perl
use warnings;
use strict;
use blib;
use XAO::Utils;
use XAO::Cache;
use Benchmark;

XAO::Utils::set_debug(1);

my $chunk=10000;

my $counter=0;
my $cache=XAO::Cache->new(
    retrieve    => sub {
        my $args=get_args(\@_);
        return {
            data    => 'Z' x 200,
            name    => $args->{name},
            counter => $counter++,
        };
    },
    expire      => 3600,
    size        => 100,
    coords      => 'name',
);

my %table;

$table{'continous cached'}=timeit($chunk*10,
    sub {
        $cache->get(name => 'aaaa');
    });

my $border=0;
$table{'filling up'}=timeit($chunk/2,
    sub {
        $cache->get(name => $border++);
    });

sleep(2);
$table{'random get'}=timeit($chunk*2,
    sub {
        $cache->get(name => int(rand(500)));
    });

print "-" x 79, "\n";
foreach my $id (sort keys %table) {
    print "$id:\n",
          timestr($table{$id}), "\n";
}
print "-" x 79, "\n";

exit(0);
