私はXSで話をしていますが、コミュニティがXSに到達することが適切であると思ったときを知る必要があります。いつXSを使うべきですか?
答えて
私はXSを使用するには、少なくとも三つの理由を考えることができます:あなたは証明可能プログラムを減速されたコードのブロックを持っているあなたはPerl 5の
- C
- で書かれている場合、それはあなたが1が明らかであると何、について説明を必要としないはず理由
XS
本当に理由2が必要なときはあまり明らかではありません。多くの場合、コードがどのように構造化されているかを調べるほうがよいでしょう。 profiled your codeがある場合は理由2を呼び出し、XSコードが高速で正しいことを証明するにはbenchmarkとtest suiteが必要です。
理由3は危険な理由です。あなたが実際に何かをするためにPerlの勇気を見なければならないことはまれですが、少なくともone valid caseがあります。
インライン:: Cと純粋なXSのメリットとデメリットをカバーすることができれば嬉しいです。 – friedo
はい、比較は素晴らしいでしょう。 wishlistへのもう1つのエントリ:XSだけではどんなことができ、Inline :: Cでは何ができるでしょうか。 – hexcoder
インライン:: CはXSのラッパーです。 C言語を呼び出すのが非常に簡単ですが、perlをビルドするのに使用されたのと同じCコンパイラが必要であるという欠点があります。一般的には、Inline :: Cを使ってXSコードを作成し、そのコードを取り出してInline :: Cを取り除くだけです。それは両方の世界の最高です。 – frezik
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/を参照してください。
これは良い点です。私は理由2に該当すると思いますが、私の理由2は狭く定義されていました。理由2はおそらく「コンピュータのリソースをより効率的に使用する」のようなものでなければならないと思う。 –
@Chas。オーウェンズは同意した。あなたは通常、それを評価するためにさまざまなツールを使用します.32ビットシステムでは、メモリにはハード制限がありますが、もう一つのリソースの問題であるため、この戦略を採用するのが早く強制される可能性があります –
- 1. setUpClassはいつ使うべきですか?__init__を使うべきですか?
- 2. C#では、いつ構造体を使うべきですか?クラスはいつ使うべきですか?
- 3. C#リストはいつ使うべきですか?そして、いつarraylistを使うべきですか?
- 4. Jira Agileでは "Story"をいつ使うべきか "Improvement"を使うべきか
- 5. マルチスレッドと比べてselectをいつ使うべきですか?
- 6. @classmethodはいつ使うべきですか?defメソッド(self)を使うべきですか?
- 7. いつ「新しい」を使うべきですか?
- 8. リアクションナビゲーションではいつreduxを使うべきですか?
- 9. redux-sagaでyield * vs yieldをいつ使うべきですか?
- 10. Python 3.xでは\ nをいつ使うべきですか?
- 11. いつマルチスレッドをJavaで使うべきですか?
- 12. ウェブジョブではなくロジックアプリケーションをいつ使うべきですか?
- 13. Pythonではいつsplit()を使うべきですか?
- 14. いつredhatBaseをapache2.confで使うべきですか?
- 15. いつこれをメソッドで使うべきですか?
- 16. いつC#で(...){...}を使うべきですか?
- 17. いつaxを使うべきですか? matplotlibで?
- 18. CodeIgniterではいつコアを使うべきですか?
- 19. いつphpでセッション変数を使うべきですか?
- 20. Javaではfinalize()メソッドをいつ使うべきですか?
- 21. いつPHPで名前空間を使うべきですか?
- 22. いつScalaで通常のクラスを使うべきですか?
- 23. display:blockを使うべきか、display:flexを使うべきですか?
- 24. PHPのmysqli_real_escape_string()関数をいつ使うべきですか?
- 25. django - media_rootまたはstatic_rootをいつ使うべきですか?
- 26. いつ線形ニューラルネットワークを使うべきですか?
- 27. いつ$ wpdb-> prepareを使うべきですか?
- 28. いつ `publishReplay`と` shareReplay`を使うべきですか?
- 29. VirtualAlloc Vsをいつ使うべきですか?
- 30. いつ@propertyを使うべきですか?
あなたのトーク/プレゼンテーションは利用できますか? – Zaid