2012/03/30

Kyoto.pm Tech Talks #01に行ってきた

3/17(土)にKyoto.pm Tech Talks #01に参加してきました。@shiba_yu36さん主催で、京都市内で開催(初回ははてなさんとこ)で、季節に一回は開催されるそうで、近所でPerlなのでうれしい限りです。

二月三月は仕事が忙しくあまり準備する時間も取れなかったのでLTだけで参加しました。実際は参加できるかどうか予定が怪しい段階で定員が埋まって、無理やりLT枠で参加させてもらった形です。

今のところ参加したPerlのイベント(YAPC::Asia Tokyo 2010, 2011, Kansai.pm #13, #14, Kyoto.pm #1)では何かしら発表をしているので、発表皆勤賞(?目指して継続したいところです。

僕が最近使ってる新しいPerlの機能

最近使うようになったPerl 5.10移行の新機能について幾つか喋るというLTをやってきました。

このテーマを選んだ背景は、最近Mojoliciousを使うようになって、そのソースコードを読んでいると比較的これらの新しい昨日が使われている事から、「もう使っても大丈夫かな」という一定の安心感を得たからです。実際のLTは時間配分をしくじったと言うか、10分貰ってもよかったかなというところですが...

~~ スマートマッチ演算子(補足)

最初の印象は頭の回転が早過ぎて何をやってるのかわからん、という感じでした。今は配列に入っている値をgrepで照合する時に使ってます。
my $d = [ qw|gmail.com hotmail.com facebook.com yahoo.com| ];
# print 'Match' if grep { $x eq $_ } @$d;
print 'Match' if $x ~~ @$d;
単に新しい機能であるから使っているわけではなく、実際にベンチマークをとって従来のgrep eq, grep ==よりも高速に動作するので使うようになりました。

JPAの講師派遣制度で来られたYappoさんが「YappoLogs: Kyoto.PM #1 で発表してきました」で
azumakuniyuki さんが、 $x=1; $y=1; の時に、 $x == $y より $x ~~ $y の方がはやいよ!って行ってたけど、そんなわけないだろうと手元の 5.15.1 でベンチとったら $x == $y のが速かった。

と仰っていて、確かに「そんなわけないなぁ」と思って次のようなコードを追加して検証しました。
sub equals {
 my $x = shift;
 return 1 if $x % 5 == 0;
}

sub smart3 {
 my $x = shift;
 return 1 if $x % 5 ~~ 0;
}

cmpthese( 2000000, { 
  '==' => sub { equals(25) },
  '~~' => sub { smart3(25) },
 });

__END__
        Rate   ~~   ==
~~ 2083333/s   -- -11%
== 2352941/s  13%   --

スライドではgrep { $x  == $_ }との比較でしたが、grepを使わないケースでは==の方が確かに高速でした。もっと差がつくと思い込んでましたが、それよりは小さな差でした。もしかしたらPerl 5.15ではもっと大きな差が出るのかもしれませんが。

Kyoto.pm

夜の新幹線で上洛された感服
すべき行動力のxaicronさん
Kyoto Perl Mongers Tech Talks #01を開催します! - Kyoto Perl Mongers」や、最後の閉会の挨拶で述べられていたようにアウトプットを重視する姿勢に共感します。

二週間も遅れてやっとブログを書いている立場では説得力がないやもしれませんが、参加するからには喋ったほうが得るものが大きく、参加したからには書いたほうがやはり得るものが多いと考えます。

発表するとなるとなんとなく心理的障壁があるように思いますが、僕がLTしたような些細でたいした事のない内容でも発表する事によって人前で喋る場数を踏むという経験値が得られます。僕は今回、Yappoさんが~~について言及下さったので、あまり深く考えていなかった点を検証する機会を得る事が出来ました。

Kyoto.pmはお寺とか神社とか御所とか二条城とか桂離宮とか祇園とか京都っぽいところでも開催されるかもしれないらしいので、次の#2も参加枠空いていれば発表したいなぁと。

0 件のコメント:

コメントを投稿