タグ

2008年12月5日のブックマーク (3件)

  • 「Perl/XSが得意なこと」の補足 - Islands in the byte stream (legacy)

    Perl/XSが得意なことはほとんどオレオレ用語といっていいくらい端折ったリストなので追々補足しておく。 まずひとつ,「注意を払う」というのは内部で呼ばれるmalloc()を極力減らすという意味と書いたが,よく考えてみればこれはmalloc()*1が遅いというのが問題なのではない*2。malloc()はそれだけで終わるものではなく,mallo()を呼ぶAPIの内部または前後ではデータのコピーが伴うのが普通だし,その前にSVの割りあてが必要だったり,あるいは一時SVを使うとなればENTER+SAVETMPS ... FREETMPS+LEAVEといったブロックスコープ管理ルーチンが伴ったりと,付随する様々な処理が加わることが極めて多い。だから避けるべきなのはmalloc()そのものというより,malloc()に付随する膨大な処理である。 具体的には,たとえばMOP.xsでは,メソッドやハッシ

    「Perl/XSが得意なこと」の補足 - Islands in the byte stream (legacy)
    dann
    dann 2008/12/05
  • HTTP Response decoded_contentをちゃんと使ってみる - D-6 [相変わらず根無し]

    HTTP Response decoded_contentをちゃんと使ってみる HTTP::Responseに格納された日語ページをちゃんとデコードしてunicodeで持ちたかったので最初 my $body = $response->decoded_content(); ってやってたんだけど、これだとcp932 (!= Shift-JIS)でこけることが多くて、とりあえずヘッダーとMETAヘッダで見るかと思って以下のようにして、decoded_content() にcharsetが必要であれば渡されるようにした。 my %opts; if ( my $ct = $res->content_type ) { if ($ct =~ /charset=Shift_JIS/) { $opts{charset} = 'cp932'; } } if ( my $ref = $res->content

    dann
    dann 2008/12/05
  • tokuhirom blog

    dann
    dann 2008/12/05