June 18, 2010
������½µ\���\���\���\������¼\������з��������ҏ�������������¡�돪����������������������������¾�������������\��\���\��\���\���\��������������폪�������·���������¹��¡�
#!/usr/local/bin/perl use strict; use Benchmark qw(:all); my @args = qw(foo bar baz); cmpthese(100000, { champ => sub { champ(\@args) }, yours => sub { yours(\@args) }, }); # winner sub champ { my $args = shift; # do something } # your code here sub yours { }¼�����돪���������������������������������������ď�ԏ����ď�����������\���\���\���\������¼\���������\���\��ď��¼\��я��̏��������������������¹���̏�¡��³�����я���������������������ġ�·������̏���������������¡�champ() ������������ď�������������Џ�����ҏ���������������¼��ԏ��̏�¡�
���½����������¼��ԏ��������й³���·������������\³���¼\��������ҏ�¡�½�돢ď�������»������������� yours() ������\���\������¼\¹����������������½��Џ��«���������������������������������ޏ��������������������«��¡����������������ӏ��·���·���������������¹��������¡�
¼�����돪�����³���������µ»������������������\���\���\���\���\���\���\·\���\�ߏ������������������������돫���������������¡�����¼��ԏ������������������������²½��������ď����𡯏������������������������ޏ�����̏�����������������������¡��폪�������̏����㏢�������������������Ð�����㏢���������������������叢�������������¹������¾������������䏢�̏��µ�������������������������������������������������¹���̏�¡��½�����������������������Ώ����я�������¡�»��ӏ���돢����\���\���\���\���\���\��я�����¾�������������������������²��ď��������«�����ԏ�����½Ð���·������������������¹��¡�
��ď�ď����������䏢�«����������
���³���³��돪��������������¡µ��ď�ď����������䏢����½��Џ�����������������¾������������돢¡�¾������· (����������돪؏��������������) \���\��������ҏ��·������������������¾������������������������������Ï����������������������������������¡�²��я�����½�����������������𡭏����������������Ώ����я��������̏����������я����������я����������폪�������¹���������³�������������돫���𡯏�����������������\������¼\������̏����ޏ�����·������������������������������¡��·µ���¼�����������·����������XS ������������¾����������������«���������폢¡ߏ��������«��¡�\Ð\«������¹�����𡯏�����µ������³���·��¡��폪�������·�����������Ώ��������³���������������·���������·�����ď�¡�
��������������¡�»��ӏ���돢����»���¹��Џ��������»��Ώ�����\���\���\���\³���¼\���\��\���\�돢������¡�yours() ������\���\������¼\¹���������������� XS ������½��Џ�������������¡�\���\���\������·���������«�����������ӏ��������»���������������«��¡����������������ӏ��·���·������¾���·������̏���������¡��½�����я�������������¡�²��ď��������«����������㏢����돫ӏ��������·���������³�����я�����\³���¼\���������½��Џ����������������Ώ��������·�����ď�¡�
sub yours { return Foo::bar(shift); BEGIN { push @INC, qw(Foo/blib/lib Foo/blib/arch); my $use = sub { eval qq{ use $_[0]; }; return $@ ? () : 1 }; unless ($use->('Foo')) { warn $@; if (-d 'Foo') { system(qw(rm -frv Foo)) && die $^E; } system(qw(h2xs -A -n Foo)) && die $^E; chdir 'Foo' or die $!; open my $xs, '>', 'Foo.xs' or die $!; print $xs <<'XSUB'; #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" MODULE = Foo PACKAGE = Foo SV * bar(args) SV *args CODE: // do something OUTPUT: RETVAL XSUB close $xs; (system($^X, 'Makefile.PL') || system('make')) && die $^E; chdir '..' or die $!; $use->('Foo') or die $@; # print "-" x 50 . "\n"; } }; }�돫�²��я����䏢����\���\���\������̏����ӏ��������������¹���̏�¡�BEGIN { } \���\���\���\�������������������¼���¹��ԏ��µ����������������������\���\���\���\������¼\����������ޏ������������ҏ����ď�𡯏�����������������������������\���\������µ����������������������������������¡�²��ď��������«\���\������������³����������돢����������·�����ď�¡������«�����������ď������«�����������ď�¡�
�����������я��«���³�����������ҏ����������Ï�����������������������\\���\������������������������Ð XS ������\���\���\���\���\��я�����½��Џ��ޏ����ď��������¹�����������я��������������������������«��쏢���������폢�½�����Ï�������𡯏��Ð��¡��³�����Ï����������Ï��������ҏ����������� Inline::XS �����Ώ����ď������������������������������µ�������������«�������������폢�������«»�ߏ����������ď������������¹���̏�¡����������Ï��������µ�������������������������������¹��������¡�
InlineX::XS �����������������Ï��������������������ޏ�������¡��³������������ Inline::C \��㏢�¼\¹������\���\���\������¼\��������� XS �����������С�¹���¹�������������������������������Ï�������¡�»�������돢¡�
���½���������½������ Inline::C ������½��Џ��ޏ��Ð�������«�����������ď����я��������������������폢�������«�����������Ï����������������������������¹���̏�¡�XS ���������叢���Ï��̏�����������������������\���\���\���������\���\���\�ߏ�����µ������̏��·�����ď����������я�����½���²�����¡�
������������²���������½������������������������½�����Ï��������¹��������¡�