タグ

xsに関するdannのブックマーク (78)

  • 「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
  • 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)
    dann
    dann 2008/12/03
    おぉ、すばらしい
  • h2xs - convert .h C header files to Perl extensions

    dann
    dann 2008/11/01
  • naoyaグループ - naoyaの日記 - XS

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    naoyaグループ - naoyaの日記 - XS
    dann
    dann 2008/10/12
  • XS Nite (Shibuya.pm Tech Talk #9) - Pixel Pedals of Tomakomai

    id:TAKESAKOさんの好意で出させてもらったので、適当にロギングします。 はじめてのXS / id:hirose31さん XSってなに? PerlとCをつなぐための言語&インタフェース Foo.xs → xsubpp → Foo.c → Cコンパイラ → Foo.so Perlからは、XSLoaderやDynaLoaderでFoo.soを読み込む なぜXSを使う? Cのライブラリを使いたい パフォーマンス向上(Cache::Memcached::Fast 等) Perlの内部をいじくり倒す(autobox*1 等) XSを書いた動機 → forkしまくりたくなかった ドキュメント perlxstut, perlxs, perlguts, perlapi h2xs or module-starter (Module::Starter::XSimple) で始める 外部のsay_hell

    XS Nite (Shibuya.pm Tech Talk #9) - Pixel Pedals of Tomakomai
    dann
    dann 2008/07/21
  • おいぬま日報(不定期) - Shibuya Perl Mongersテクニカルトーク#9 (XS Nite)に行ってきました ,

    @ [shibuya.pm] Shibuya Perl Mongersテクニカルトーク#9 (XS Nite)に行ってきました 久々にテクニカルトークに行ってきました。レポートというかまとまっていないログと感想ですが、記録のために残しておきます。 # はじめてのXS (hirose31さん) 10分遅れで参加したので最初のほうを聞けなかったのですが、XSだとメモリリークの問題があるよ〜、と言っていました。malloc/freeのように、New〜したものはSafefree()、newSV〜したものはsv_freeをして解放しないと駄目ですよと。プロファイリングにはgprofは使えないのでvalgrindを使うと良いらしいです。最後のdankogaiさんの質問が厳しかったです。 # Perl 5 Internalsの世界にようこそ (Daisuke Makiさん) XS / XSUB: CとP

    dann
    dann 2008/07/21
  • Perl XS - typemap vs RETVAL - D-6 [相変わらず根無し]

    dann
    dann 2008/07/21
  • XS利用でPerl高速化 その2 - ひげぽん OSとか作っちゃうかMona-

    前回は、XSモジュールを使うと処理が高速になる可能性があるという紹介をしました。 ただしXSモジュールの導入にはデメリットもあります。 C言語で実装しているという関係上、 モジュール変更のたびにリコンパイルが必要である メモリリークの危険性がある Perlの管理下にないメモリは自分で解放しなければなりません(詳細は後日) プラットフォーム間での互換性が保てない リコンパイルや修正が必要な場合が多い PerlのXSバージョンに左右される場合がある Perl単体のときと比べてデバッグが難しい などなど、クリアすべき点があります。 というわけで使いどころとしては、 Perlのコードで速度的にボトルネックになっている部分があり そのコードの仕様はほぼfixしている(変更が入る可能性は少ない) というような場合に、XSで処理を書いてみて、ベンチマークをとってみるという形が良いと思います。 なおXSに

    XS利用でPerl高速化 その2 - ひげぽん OSとか作っちゃうかMona-
    dann
    dann 2008/07/21
    実用Perlプログラミング
  • ひげぽん 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高速化
    dann
    dann 2008/07/21
  • mixi Engineers’ Blog » 言語バインディングを書こう

    世田谷の某所から原宿まで自転車通勤しているのですが、そろそろ寒くなってきたので電車に切り替えようかと悩み中のmikioです。今回はTokyo Cabinetのスクリプト言語バインディングについて述べます。 スクリプト言語バインディングとは TCはC言語で実装されたライブラリで、C言語(C89、C99)およびC++言語のプログラムから利用することができます。CやC++は各種の計算処理やシステムコールの呼び出しを直接的に記述できるので高速に動作するプログラムを作ることができる反面、ポインタ演算やメモリ管理などで致命的なバグを潜ませやすいので非常に注意深くコーディングを進めなければいけません。つまり、プログラムの実行速度は速いが、開発速度は遅いということです。 それに対して、PerlRubyをはじめとするいわゆるスクリプト言語は、実行速度はCやC++に劣るものの、高水準かつ直感的な文法と強力な

    mixi Engineers’ Blog » 言語バインディングを書こう
    dann
    dann 2008/07/21
  • PL_check とパトリオットミサイルのしくみ - daily dayflower

    前回の記事はおかげさまで id:yappo さんに HE-N-TA-I 認定されたので安心してたら,マッチョな人に牛刀フラグを立てられ(もちろん冗談です*1),Shibuya.pm 入会への道もなかなか険しいなぁと思い知りました。 そんな空気は読まずに理論編?を Perl 5.8.8 のソースをもとに書いていきます。マニア向け。 Perl がスクリプトを実行するまで perlguts の Compiled code セクションと Perl のソースコードをもとに,おおまかな実行機序を書いてみました。 字句解析器(レキサ; toke.c) 字句エラーの検出 構文解析器(パーサ; perly.y*2) 構文エラーの検出 OPCODE ツリーに変換; new*OP() in op.c check ルーチンの実行(pass 1) (文脈にもとづく)文法エラーの検出 by 各 PL_check[](

    PL_check とパトリオットミサイルのしくみ - daily dayflower
  • PL_check hack - daily dayflower

    (あとでかく) XS くらいいじれないと Shibuya.pm に加入できないらしいので,とりあえず書きましたー。今回は実践編なので,あまりわかりやすい内容&たいした内容ではないです。わっふるさせてごめんなさい。 ゴール #!/usr/bin/perl eval 'print "Hello ' . $ARGV[0] . '!\n"'; とか危険ですよねー*1。こんな機能があるなんてけしからん。ですので,eval の実行を抑制するモジュールを書いてみました。 というのは冗談で,eval の実行主体となる OPCODEが,システム内で「完結」してます(んーうまく表現できない)。なのでサンプルとしていじりやすく,この題材をとりあげました。 評価型 eval はどのような OPCODE に変換されるのか まずは単純なコードを書いて,OPCODE がどのようになるのかたしかめてみます。 use st

    PL_check hack - daily dayflower
  • Perl の内部処理系をお勉強

    ちょっと前に perlfilter - Source Filters - についてお勉強したときから調べようと思っていたことなのですが、Perl の内部処理の流れ(Perl 5 Internals)についてお勉強中です。思いっきり見逃してしまいましたが、Perl 5 Internals に興味を満ち始めたこのタイミングにあわせたかのように Shibuya Perl Mongers : Shibuya Perl Mongersテクニカルトーク#9 で XS ネタをやっていたみたいです。残念です。 さて、今回のお勉強の方法は、ズバリ perl 5.8.8 のソースの読解です。もちろん今回は流れを把握するためのものなので、あまり樹海の奥深くまで足を踏み入れたくはないのですが・・・。この記事を書いている時点では perl_parse までの流れを読み終えたところなのですが、構文解析と字句解析が樹海

    dann
    dann 2008/06/28
  • YappoLogs: Shibuya.pm tech talk #9 (XS nite)で発表してきました

    Shibuya.pm tech talk #9 (XS nite)で発表してきました Perl体にパッチをあてる事無く動的に動いてるPerlのコアを書き換えちゃう事が出来るPL_checkやo->op_ppaddrなどについて発表してきました。 資料はそれなりなポインターとして使える風味なので、よろしければご覧下さい。 http://svn.coderepos.org/share/docs/yappo/20080625-shibuyapm9/shibuyapm9-pl_check-hacks.pl Posted by Yappo at 2008年06月26日 22:36 | TrackBack | Perl Gold in WoW is usually called wow gold, which is as popular as wow power leveling among WoW

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • Shibuya.pm #9 My First XS

    Shibuya Perl Mongers technical talk #9 a.k.a. XS Nite http://shibuya.pm.org/blosxom/techtalks/200806.htmlRead less

    Shibuya.pm #9 My First XS
    dann
    dann 2008/06/28
  • XS の自分用索引 - 御玉杓子スパイラル

    perl5 Manual から, 自分でXSを読む為に必要なものを抜き出してみる XS キーワードモジュール全体の構造に関するキーワードマクロ概要参照メモMODULECとXSを分け, 続く行をXSのコードとするThe Perl5 Manual - MODULE キーワードPACKAGE複数のパッケージに分ける場合, MODULEと共に宣言しなおすThe Perl5 Manual - PACKAGE キーワードPREFIXperl から呼び出されるときに取り除かれるプリフィクスThe Perl5 Manual - PREFIX キーワードBOOTモジュールがロードされるときの処理を追加するThe Perl5 Manual - BOOT キーワード XSUB 単体に関するキーワードマクロ概要参照メモPPCODECで書かれたコードが開始する事を示す. 返値の処理が自前で書かれている事を示すThe

    dann
    dann 2008/06/24
  • PerlGuts Illustrated

    PerlGuts Illustrated PerlGuts Illustrated Version 0.06 This document is meant to supplement the perlguts(1) manual page that comes with Perl. It contains commented illustrations of all (eventually?) major internal Perl data structures. Having this document handy hopefully makes reading the Perl source code easier. It might also help you interpret the Devel::Peek dumps. I'll try to expand it as I l

    dann
    dann 2008/06/05