\���\���\���\³���¼\���\��\���\�돢���� XS - ���������������ď����я�����µ���½���

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 ���������叢���Ï��̏�����������������������\���\���\���������\���\���\�ߏ�����µ������̏��·�����ď����������я�����½���²�����¡�

���򏪮���������²���������½������������������������½�����Ï��������¹��������¡�

nipotan at 17:50 | Comments(0) | TrackBack(0) | µ»½��� 
³\\\\¼ҏ\\\\¼\²

Trackback URL for this entry

Post a comment

Name:
URL:
  Remember info?: Rate: Face    Star
 
 
 
<% for ( var i = 0; i < 7; i++ ) { %> <% } %>
<%= wdays[i] %>
<% for ( var i = 0; i < cal.length; i++ ) { %> <% for ( var j = 0; j < cal[i].length; j++) { %> <% } %> <% } %>
0) { %> id="calendar-10151-day-<%= cal[i][j]%>"<% } %>><%= cal[i][j] %>
Twitter
Popular Entries
Recent Entries
Archives
Categories
Recent Comments
<%==comments[n].author%>
<% } %>
livedoor ReaderÐ
livedoor Blog\\\돢
livedoor \\\\\
Syndicate this site

'); label.html('\ \���\���\���\���\��\���\���\�돢����������¹­¹��Ï�����\��Џ��¼\½\���\���\���\��돢����������²�������̏��������������ď�����\���\���\­���¼(cookie)������»��������Џ��·���������������������¹��¡�
\ ���³������\Ð\������¼�����ҏ��������������������«�ޏ�䏪���������·��Џ��³���¹���������³������������\���\���\­���¼������»��������Џ�����¾µ����������������ď����������������ď������������������µ���»�����������������ď��������­���������¹��¡�
\ �����������ď�¡�����µ��ҏ�����������������¼���\��Џ��¼\���\������¼���������������������쏢�ޏ�����½���������������¼������³���­��������������������¡�\���\���\­���¼������»��������Џ����ҡ�����������¹���������³���������������������­���������¹��¡�
\ ¾��䏢돪㏢����\���\���\���\���\�񏪿��̏�����µ�̏����я����ҏ��³���������������������µ��������¡�\ '); banner.append(label); var closeButton = $('