File: benchmark.pl

package info (click to toggle)
libhash-multivalue-perl 0.16-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 192 kB
  • sloc: perl: 270; makefile: 2
file content (35 lines) | stat: -rwxr-xr-x 854 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/perl
use strict;
use Benchmark;
use Hash::MultiValue;

package main;

my $how_many = shift || 100;

my @form = map { $_ => $_ % 5 == 0 ? [ rand 1000, rand 10000 ] :  rand 1000 } 1..$how_many;

timethese 0, {
    'normal hash' => sub {
        my %form = @form;
        my $form = \%form;
        my @k = keys %$form;
        $form->{14} = 1000;
        delete $form->{14};
        my @values = @{$form}{1..10};
    },
    multivalue => sub {
        my $form = Hash::MultiValue->new(@form);
        my @k = keys %$form;
        $form->{14} = 1000;
        delete $form->{14};
        my @values = @{$form}{1..10};
    },
    multivalue_oo => sub {
        my $form = Hash::MultiValue->new(@form);
        my @k = $form->keys;
        $form->add(14 => 1000);
        $form->remove(14);
        my @values = map $form->get($_), 1..10;
    },
};