Skip to content

Instantly share code, notes, and snippets.

@nihen
Created January 18, 2010 04:15
Show Gist options
  • Save nihen/279776 to your computer and use it in GitHub Desktop.
Save nihen/279776 to your computer and use it in GitHub Desktop.
Benchmark: running data_recursive, data_rmap, data_visitor for at least 1 CPU seconds...
data_recursive: 2 wallclock secs ( 1.01 usr + 0.00 sys = 1.01 CPU) @ 17970.30/s (n=18150)
data_rmap: 1 wallclock secs ( 1.00 usr + 0.00 sys = 1.00 CPU) @ 7168.00/s (n=7168)
data_visitor: 1 wallclock secs ( 1.02 usr + 0.00 sys = 1.02 CPU) @ 6200.00/s (n=6324)
Rate data_visitor data_rmap data_recursive
data_visitor 6200/s -- -14% -65%
data_rmap 7168/s 16% -- -60%
data_recursive 17970/s 190% 151% --
use warnings;
use utf8;
use Encode;
use Benchmark qw(:all);
use Data::Visitor::Encode;
use Data::Recursive::Encode;
use Data::Rmap ();
my $sample = sub { { key => ["これはサンプルです","これはサンプルです"] } };
use Devel::Peek;
my $cmp = timethese(
-1,
{
data_recursive => sub {
my $sample = $sample->();
my ($s) = Data::Recursive::Encode->encode_utf8($sample);
},
data_visitor => sub {
my $sample = $sample->();
Data::Visitor::Encode->encode('utf8', $sample);
},
data_rmap => sub {
my $sample = $sample->();
Data::Rmap::rmap { $_ = Encode::encode_utf8($_) } $sample;
},
}
);
cmpthese $cmp;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment