Guest User

bench_redc_set_vs_hmset

a guest
Mar 10th, 2018
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.48 KB | None | 0 0
  1. use 5.16.1;
  2. use strict;
  3. use warnings;
  4. use utf8;
  5. use open qw(:utf8);
  6.  
  7. use Tag::DeCoder;
  8. use File::Slurp qw(read_file);
  9. use Benchmark qw(cmpthese);
  10. use JSON::XS;
  11. use Redis::Fast;
  12.  
  13. my $redc = Redis::Fast->new;
  14. $ARGV[0] or die 'You must specify file name';
  15. my $json = read_file(shift);
  16. my $hsh = JSON::XS->new->decode( $json );
  17.  
  18. cmpthese(10 => {
  19.     'set' => sub {
  20.         $redc->multi;
  21.         $redc->flushdb;
  22.         $redc->set(
  23.             $_->[0] => encodeByTag('CB' => $_->[1]),
  24.             sub {}
  25.         ) while @{$_} = each $hsh;
  26.         $redc->wait_all_responses;
  27.         $redc->exec;
  28.     },
  29.     'hmset-fakey' => sub {
  30.         $redc->multi;
  31.         $redc->flushdb;
  32.         $redc->hmset($_->[0], 'fakey' => encodeByTag('CB'=>$_->[1]), sub {})
  33.             while @{$_} = each $hsh;
  34.         $redc->wait_all_responses;
  35.         $redc->exec;
  36.     },
  37.     'hmset-true' => sub {
  38.         $redc->multi;
  39.         $redc->flushdb;
  40.         while (my ($k, $v) = each $hsh) {
  41.             $redc->hmset($k,
  42.                 ( map {
  43.                     my ($ki, $vi) = each $v;
  44.                     $ki => ref($vi)
  45.                             ? encodeByTag('CB' => $vi)
  46.                             : utf8::is_utf8($vi)
  47.                                 ? do { utf8::encode($vi); $vi }
  48.                                 : $vi
  49.                 } 1..keys $v ),
  50.                 sub {}
  51.             )
  52.         }
  53.         $redc->wait_all_responses;
  54.         $redc->exec;
  55.     },    
  56. });
Add Comment
Please, Sign In to add comment