2009-07-01から1ヶ月間の記事一覧
Moose/MOPにおいて,メソッド生成に関わるクラスは以下の通り。 Instance オブジェクトインスタンスへのアクセスを抽象化するクラス インスタンスへアクセスするもっとも低水準なAPIを提供 Method メソッド一般を表すベースクラス Method::*(Method::Accesso…
Module::Install::XSUtilを利用するモジュールの例として,既存のモジュールを書きなおしてみた。XS::MRO::Compatは元のDevel::MROで,MRO::CompatをXSから使えるようにするXSモジュールで,XSからの利用を企図したメタXSモジュールである。これはXSUtilのヘ…
Makefile.PLを書くためのビルドユーティリティの一つであるModule::Installは非常に便利だが,XSモジュールのサポートが弱い。 そこで,Module::InstallのプラグインとしてModule::Install::XSUtilを書いてみた。 http://search.cpan.org/dist/Module-Instal…
NYTProfを使うと,inclusive time*1とexclusive time*2を調べることができる。XS化というのはこのexclusive timeを減らすためのものだと言える。実際私は,今までは高速化というとexclusive timeしか見ていなかった。ところが,実際にはexclusive timeが10%…
Devel::Declareのフロントエンドモジュールでは「これはソースフィルタではない」と書いてあったりするので誤解があるようですが,Devel::Declareはソースフィルタです。 たとえば以下のコード: #!perl use strict; use MooseX::Declare; class Foo{ method…
Do not use Devel::Declareの続き反応: http://d.hatena.ne.jp/charsbar/20090713/1247488795 http://d.hatena.ne.jp/tokuhirom/20090713/1247490768私がDevel::Declareを使うべきではないと考える理由は,何かを模しているとか実装が不安定であるとか効率…
モダンPerlの世界へようこそ 第11回でDevel::Declareが取り上げられていました。 このモジュールは確かに「スゴイ」のですが,個人的には使うべきではないと思っています。もちろん,Devel::DeclareのフロントエンドであるMethod::SignaturesやMooseX::Decla…
5.10のメンテナンスリリースである5.10.1のリリースに向けて,RC0が出たようだ。http://www.iabyn.com/tmp/perl-5.10.0-GitLive-maint-5.10-1551-gadd0c32.tar.gzもっとも,まだバージョンは5.10.0のままなので本当にスナップショットに過ぎないようだが。pe…
開発中のモジュールのロード時間を計るベンチマークスクリプト: #!perl -w use strict; use Benchmark qw(:all); my $module = 'Moose'; cmpthese timethese 10 => { released => sub{ system($^X, '-e', "require $module") == 0 or die; }, blead => sub{ …
Multi-threaded perlとSingle-threaded perlの比較に加えて,gcc4とgcc3でも比較してみた。結果はgcc4の方が約1%ほど高速だったが,スレッドの有無ほどの差はないようだ。コンパイルオプションはcc以外は前回と同じ(スレッドはなし): $ gcc34 --version gcc…
Class::MOP::Class->create_anon_class()がメモリリークを起こしていたので修正パッチを書いた。 https://rt.cpan.org/Ticket/Display.html?id=47480 create_anon_class()自体がメモリリークしていたのは以前から知っていたのだが,気が付いたらメモリリーク…