2011-07-13 10 views
2

私はXSで話をしていますが、コミュニティがXSに到達することが適切であると思ったときを知る必要があります。いつXSを使うべきですか?

+0

あなたのトーク/プレゼンテーションは利用できますか? – Zaid

答えて

10

私はXSを使用するには、少なくとも三つの理由を考えることができます:あなたは証明可能プログラムを減速されたコードのブロックを持っているあなたはPerl 5の

  • にアクセスするCライブラリを持っている

    1. C
    2. で書かれている場合、それはあなたが1が明らかであると何、について説明を必要としないはず理由

    XS

  • でのみ利用可能なものにアクセスする必要が速くなります。

    本当に理由2が必要なときはあまり明らかではありません。多くの場合、コードがどのように構造化されているかを調べるほうがよいでしょう。 profiled your codeがある場合は理由2を呼び出し、XSコードが高速で正しいことを証明するにはbenchmarktest suiteが必要です。

    理由3は危険な理由です。あなたが実際に何かをするためにPerlの勇気を見なければならないことはまれですが、少なくともone valid caseがあります。

    +1

    インライン:: Cと純粋なXSのメリットとデメリットをカバーすることができれば嬉しいです。 – friedo

    +0

    はい、比較は素晴らしいでしょう。 wishlistへのもう1つのエントリ:XSだけではどんなことができ、Inline :: Cでは何ができるでしょうか。 – hexcoder

    +0

    インライン:: CはXSのラッパーです。 C言語を呼び出すのが非常に簡単ですが、perlをビルドするのに使用されたのと同じCコンパイラが必要であるという欠点があります。一般的には、Inline :: Cを使ってXSコードを作成し、そのコードを取り出してInline :: Cを取り除くだけです。それは両方の世界の最高です。 – frezik

    3

    XSを使用するもう1つの理由は、メモリ管理が優れていることがあります。たとえば、類似したタイプのオブジェクトの非常に大きなブロックがある場合、これはXSを通じてより効率的に管理できます。 KinoSearchは、たとえば、大きな文字列の開始オフセットと終了オフセットを、XSを通じてスカラの巨大なプールとしてより効果的に管理できるトークンに使用します。 PDLには、速度だけでなくメモリ管理の側面もあります。

    このアプローチのいくつかを長期間に渡ってコアPerlに統合する提案があります。最初は、スレッド化でデータを共有するチャンスがあるからです。http://openparallel.com/2011/07/05/a-new-hope-for-efficient-safe-data-sharing-between-threads-in-perl/を参照してください。

    +1

    これは良い点です。私は理由2に該当すると思いますが、私の理由2は狭く定義されていました。理由2はおそらく「コンピュータのリソースをより効率的に使用する」のようなものでなければならないと思う。 –

    +0

    @Chas。オーウェンズは同意した。あなたは通常、それを評価するためにさまざまなツールを使用します.32ビットシステムでは、メモリにはハード制限がありますが、もう一つのリソースの問題であるため、この戦略を採用するのが早く強制される可能性があります –

    関連する問題