Cache-Profile

 view release on metacpan or  search on metacpan

t/profile.t  view on Meta::CPAN

#!/usr/bin/perl

use strict;
use warnings;

use Time::HiRes 1.84 qw(time clock);
use Try::Tiny;
use Test::More;
use List::Util qw(shuffle);

use Test::Needs qw(
    Cache::Ref::FIFO
    Cache::Ref::LRU
    Cache::Ref::CART
    Cache::Ref::CLOCK
);

use ok 'Cache::Profile';
use ok 'Cache::Profile::CorrelateMissTiming';
use ok 'Cache::Profile::Compare';

# this uses a weighted key set
my @keys = shuffle( ( map { 1 .. $_ } 1 .. 25 ), 1 .. 200 );
my %seen;
my $sigma = grep { !$seen{$_}++ } @keys;

my $size = 20;

my $p_fifo = Cache::Profile->new(
    cache => Cache::Ref::FIFO->new( size => $size ),
);

$p_fifo->set( foo => "bar" );
is( $p_fifo->get("foo"), "bar", "simple set/get" );

is( $p_fifo->hit_count, 1, "hit count" );
is( $p_fifo->miss_count, 0, "miss count" );

$p_fifo->reset;

is( $p_fifo->get("bar"), undef, "cache miss" );

is( $p_fifo->hit_count, 0, "hit count" );
is( $p_fifo->miss_count, 1, "miss count" );

$p_fifo->reset;

my $p_lru = Cache::Profile::CorrelateMissTiming->new(
    cache => Cache::Ref::LRU->new( size => $size ),
);

my $p_cart = Cache::Profile->new(
    cache => Cache::Ref::CART->new( size => $size ),
);

my @more = ( Cache::Ref::CLOCK->new( size => $size ) );

try {
    require CHI;
    #push @more, CHI->new( driver => 'Memory', datastore => {}, max_size => $size );
    push @more, CHI->new( driver => 'Memory', datastore => {} ); # max size seems broken
};

try {
    require Cache::FastMmap;
    push @more, Cache::FastMmap->new(cache_size => '1k');
};



( run in 0.484 second using v1.01-cache-2.11-cpan-39bf76dae61 )