root/lang/perl/Method-Cached/trunk/t/benchmark.pl @ 20638

Revision 20638, 1.8 kB (checked in by bonnu, 5 years ago)

lang/perl/Method-Cached - sense of naming | syntax

Line 
1#!/usr/bin/env perl
2
3use strict;
4use warnings;
5use FindBin::libs;
6
7use Method::Cached::Manager -domains => {
8    'cache-memcached-fast' => {
9        storage_class    => 'Cache::Memcached::Fast',
10        storage_args     => [
11            { servers    => [qw/ 127.0.0.1:11211 /] },
12        ],
13        key_regularizer  => 'SERIALIZE', # 'LIST',
14    },
15    'cache-fastmmap'       => {
16        storage_class    => 'Cache::FastMmap',
17        storage_args     => [
18            share_file     => '/tmp/fastmmap.bin',
19            unlink_on_exit => 0,
20        ],
21        key_regularizer  => 'SERIALIZE', # 'LIST',
22    },
23};
24
25{
26    package Dummy;
27
28    use Method::Cached;
29    use Attribute::Memoize;
30
31    sub fib {
32        my $n = shift;
33        return $n if $n < 2;
34        fib($n - 1) + fib($n - 2);
35    }
36
37    sub fib_memcached : Cached('cache-memcached-fast', 5) {
38        my $n = shift;
39        return $n if $n < 2;
40        fib_memcached($n - 1) + fib_memcached($n - 2);
41    }
42
43    sub fib_fastmmap : Cached('cache-fastmmap', 5) {
44        my $n = shift;
45        return $n if $n < 2;
46        fib_fastmmap($n - 1) + fib_fastmmap($n - 2);
47    }
48
49    sub fib_memoize : Memoize {
50        my $n = shift;
51        return $n if $n < 2;
52        fib_memoize($n - 1) + fib_memoize($n - 2);
53    }
54}
55
56package main;
57
58use Benchmark;
59
60my $num = 13;
61
62my ($fib, $mc_fib, $fm_fib, $f_fib, $m_fib);
63
64sub fib    { $fib    = $num; $fib    = Dummy::fib($fib)              }
65sub mc_fib { $mc_fib = $num; $mc_fib = Dummy::fib_memcached($mc_fib) }
66sub fm_fib { $fm_fib = $num; $fm_fib = Dummy::fib_fastmmap($fm_fib)  }
67sub m_fib  { $m_fib  = $num; $m_fib  = Dummy::fib_memoize($m_fib)    }
68
69Benchmark::cmpthese(10000, {
70    'fib'               => \&fib,
71    'C(Memcached-Fast)' => \&mc_fib,
72    'C(FastMmap)'       => \&fm_fib,
73    'Memoize'           => \&m_fib,
74});
Note: See TracBrowser for help on using the browser.