タグ

関連タグで絞り込む (3)

タグの絞り込みを解除

PerlとXSに関するBoBppのブックマーク (5)

  • gdbでxsをデバッグ - フリーフォーム フリークアウト

    移転しました http://please-sleep.cou929.nu/20090805.html

    gdbでxsをデバッグ - フリーフォーム フリークアウト
    BoBpp
    BoBpp 2010/07/12
  • XSでメモリークを避けるたった一つの方法 - Islands in the byte stream (legacy)

    XSでメモリリークを避ける基原則は、それほど難しくない。すなわち、作ったSV(およびSVファミリ)はすぐsv_2mortal()するのである。mortalなSVはスコープ*1から抜けるときに解放されるため、メモリリークは起こらない。つまり、あるスコープ内で新しく作ったすべてのSVをmortalな状態にしておくということだ。 この原則のもとでコードを書くと、誤ってリファレンスカウントを増やさなかったケースでは警告が頻繁に起きる。しかし、少なくともメモリリークは起こらない*2。メモリリークの検出は難しいので、警告が出るのは福音であろう。 もちろんこれは原則で、メモリリークにまつわることで覚えなければならないことは決して少なくない。 たとえば、XSUBの戻り値をSV*にするとき、sv_2mortal(RETVAL)してはいけない。これはPerlの仕様ではなくxsubppが勝手にsv_2mort

    XSでメモリークを避けるたった一つの方法 - Islands in the byte stream (legacy)
    BoBpp
    BoBpp 2010/06/03
  • Perl/XSが得意なこと - Islands in the byte stream (legacy)

    最近ひたすらXSを書いていて思ったのが,XSはやっぱり速いということ。 ただ,いつでも無条件に速いというわけでもなく,何も考えずに書くとPurePerlのコードより遅くなることも珍しくない。実際,最近書いたShikaやMOPのXS版もいきなり高速だったわけではなく,一番最初のコードはPurePerlのほうが10%-30%ほど高速だった。 いろいろベンチマークをとった結果の感触として,XSの得手・不得手が分かってきたのでメモしておく。ちなみに下記で「注意を払う」というのは内部で呼ばれるmalloc()を極力減らすという意味で使っている。SVの生成自体はmalloc()を伴わないことが多い*1が,文字列の生成/連結や配列の生成/push/unshiftでは内部でmalloc()が呼ばれる可能性が高く,速度を落とす原因となる。 得手分野 ループ - XSのループが早いというより,Perlのループ

    Perl/XSが得意なこと - Islands in the byte stream (legacy)
    BoBpp
    BoBpp 2009/01/15
  • ひげぽん OSとか作っちゃうかMona- - [Perl] XS利用でPerl高速化

    (追記:2009/03/25) id:tokuhirom さんからコメントを頂きました。このベンチマークは問題があるそうです。 http://d.hatena.ne.jp/higepon/20050615/1118829090#c (追記:終わり) PerlにはC言語で書かれた関数を呼び出すためにXSという仕組みが存在します。 一部CPANモジュールでも使われているためご存知の方も多いと思いますが、今回はこのXSの簡単な利用方法を紹介したいと思います。 なおXSは、はてなでも使用しています。 さてXSモジュールを使うとうれしい事は C言語で書くことにより、処理が高速になる可能性がある 既存のC言語ライブラリ資産をPerlから利用することができる Perlがあまり得意でない、メモリ内などに存在するビット単位での細かなデータ構造を、あれこれできる などが挙げられると思います。 今回は、高速化に

    ひげぽん OSとか作っちゃうかMona- - [Perl] XS利用でPerl高速化
    BoBpp
    BoBpp 2009/01/15
  • perlguts - Perl's Internal Functions Perlの内部関数

    NAME DESCRIPTION Variables Datatypes What is an "IV"? Working with SVs What's Really Stored in an SV? Working with AVs Working with HVs Hash API Extensions References Blessed References and Class Objects Creating New Variables Reference Counts and Mortality Stashes and Globs Double-Typed SVs Magic Variables Assigning Magic Magic Virtual Tables Finding Magic Understanding the Magic of Tied Hashes a

    BoBpp
    BoBpp 2008/07/09
  • 1