Skip to content

Instantly share code, notes, and snippets.

#!perl
# benchmark encoding detection for JSON
use strict;
use Modern::Perl;
use Benchmark qw(:all);
use utf8;
use Encode;
# >>> copied from Mojo::JSON
package Data::MessagePack::PP;
use 5.008000;
use strict;
use B ();
use Scalar::Util qw( blessed );
use Carp ();
our $VERSION = '0.03';
=pod
perl -I./lib benchmark/serialize.pl
-- serialize
JSON::PP: 2.27003
Data::MessagePack::PP: 0.01
Rate mp json
mp 158/s -- -15%
json 186/s 18% --
pack('d>', $double); unpack('d>', $unpacked_double);
# pack, unpackに'>'が使えない場合、
# 下記で等価($doubleの内部表現がリトルエンディアン)
@v = unpack( 'V2', pack( 'd', $double ) );
$packed_double = pack( 'N2', @v[1,0] );
@v = unpack( 'V2', $packed_double );
$double = unpack( 'd', pack( 'N2', @v[1,0] ) );
for q/Q options unsupported pack
sub unpack_Q {
my ( $v1, $v2 ) = unpack( 'N2', shift );
return $v1 * (2 ** 32) + $v2;
};
sub unpack_q {
my $v = shift;
my ( $v1, $v2 ) = unpack( 'N2', $v );
# Data::MessagePack passes on 64bit box but fails on 32bit
=pod
XS and PP on v5.12.1 built for x86_64-linux-thread-multi
pass all tests.
XS on v5.12.0 built for i686-linux-thread-multi
on v5.8.8 built for i686-linux-thread-multi
my @paths = @{$tx->{path}};
local $tx->{path};
local $tx->{template} = $tmpl{$foo} ||= {};
push @{$tx->{path}}, $path{$foo}, @paths;
@makamaka
makamaka / gist:1161799
Created August 22, 2011 06:36
YAPC::Asia Tokyo 2011 上司の説得が必要な方へ

この文章は http://www.adobe.com/jp/joc/max2011/cyb/index.html (Adobe MAX 2011 : 上司の説得が必要な方へ)一般向けテンプレートが元ネタです。ネタを活かしきれていないですがご容赦を。(下記テンプレの文責はmakamakaに帰しますが、実際に使用した結果の責任は負いかねます)

#上司の説得が必要な方へ

「YAPC::Asia Tokyo 2011に参加したいが、上司が首を縦に激しく振ってくれない」という方のために、YAPC::Asiaに参加するメリットをアピールするための文章テンプレートを用意しました。ぜひ、カスタマイズしてご利用ください。っていうか、そのまま使うのはおやめください。

@makamaka
makamaka / OXGame.pm
Created May 21, 2012 04:51
やったー Yaircで○×ゲームできたよー
package Yairc::Plugin::OXGame;
=pod
○×ゲーム
3×3のマスに○と×を交互に置いて
タテ・ヨコ・ナナメ3連続になった方の勝ち
タグは #ox
まずはTAGSにoxを追加しておきましょう。
@makamaka
makamaka / yancha_ircd.pl
Created May 30, 2013 16:19
yanchaのircなアレの実験に使ったコード
use strict;
use warnings;
use feature 'say';
use AE;
use AnyEvent::IRC::Server;
use AnyEvent::IRC::Util;
use Getopt::Long;
use Yancha::Client;
use LWP::UserAgent;
use AnyEvent::IRC::Client;