2009-07-01から1ヶ月間の記事一覧

A note about the method generator mechanism on Moose

Moose/MOPにおいて,メソッド生成に関わるクラスは以下の通り。 Instance オブジェクトインスタンスへのアクセスを抽象化するクラス インスタンスへアクセスするもっとも低水準なAPIを提供 Method メソッド一般を表すベースクラス Method::*(Method::Accesso…

Examples for Module::Install::XSUtil

Module::Install::XSUtilを利用するモジュールの例として,既存のモジュールを書きなおしてみた。XS::MRO::Compatは元のDevel::MROで,MRO::CompatをXSから使えるようにするXSモジュールで,XSからの利用を企図したメタXSモジュールである。これはXSUtilのヘ…

Module::Install::XSUtil - Manages XS modules

Makefile.PLを書くためのビルドユーティリティの一つであるModule::Installは非常に便利だが,XSモジュールのサポートが弱い。 そこで,Module::InstallのプラグインとしてModule::Install::XSUtilを書いてみた。 http://search.cpan.org/dist/Module-Instal…

About optimazation: inclusive time and exclusive time

NYTProfを使うと,inclusive time*1とexclusive time*2を調べることができる。XS化というのはこのexclusive timeを減らすためのものだと言える。実際私は,今までは高速化というとexclusive timeしか見ていなかった。ところが,実際にはexclusive timeが10%…

Devel::Declare is a source filter

Devel::Declareのフロントエンドモジュールでは「これはソースフィルタではない」と書いてあったりするので誤解があるようですが,Devel::Declareはソースフィルタです。 たとえば以下のコード: #!perl use strict; use MooseX::Declare; class Foo{ method…

Thinking about source filters

Do not use Devel::Declareの続き反応: http://d.hatena.ne.jp/charsbar/20090713/1247488795 http://d.hatena.ne.jp/tokuhirom/20090713/1247490768私がDevel::Declareを使うべきではないと考える理由は,何かを模しているとか実装が不安定であるとか効率…

Do not use Devel::Declare, a magical source filter.

モダンPerlの世界へようこそ 第11回でDevel::Declareが取り上げられていました。 このモジュールは確かに「スゴイ」のですが,個人的には使うべきではないと思っています。もちろん,Devel::DeclareのフロントエンドであるMethod::SignaturesやMooseX::Decla…

Perl 5.10.1 RC0 (but not formal release)

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…

Time loading modules, compareing the blead with the released

開発中のモジュールのロード時間を計るベンチマークスクリプト: #!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{ …

Which are faster, perls in gcc4 or perls in gcc3?

Multi-threaded perlとSingle-threaded perlの比較に加えて,gcc4とgcc3でも比較してみた。結果はgcc4の方が約1%ほど高速だったが,スレッドの有無ほどの差はないようだ。コンパイルオプションはcc以外は前回と同じ(スレッドはなし): $ gcc34 --version gcc…

Fixed memory leaks in Class::MOP

Class::MOP::Class->create_anon_class()がメモリリークを起こしていたので修正パッチを書いた。 https://rt.cpan.org/Ticket/Display.html?id=47480 create_anon_class()自体がメモリリークしていたのは以前から知っていたのだが,気が付いたらメモリリーク…