私は XS に関する講演を書いていますが、コミュニティがいつ XS に到達するのが適切であると考えるかを知る必要があります。
2 に答える
XS を使用する理由は少なくとも 3 つ考えられます。
- Perl 5 でアクセスしたい C ライブラリがある
- プログラムの速度を低下させていることが証明されているコード ブロックがあり、C で記述した場合はより高速になります。
- XS でのみ利用可能なものへのアクセスが必要です
理由 1 は明らかであり、説明する必要はありません。
本当に必要な場合、理由 2 はあまり明白ではありません。多くの場合、コードがどのように構造化されているかを調べたほうがよいでしょう。コードのプロファイリングを行い、XS コードがより高速で正しいことを証明するベンチマークとテストスイートがある場合にのみ、理由 2 を呼び出す必要があります。
理由3は危険な理由です。何かをするために実際に Perl の内臓を調べる必要があることはめったにありませんが、少なくとも1 つの有効なケースがあります。
いくつかのケースでは、より優れたメモリ管理が XS を使用するもう 1 つの理由です。たとえば、類似したタイプのオブジェクトの非常に大きなブロックがある場合、これは XS を介してより効率的に管理できます。KinoSearch
これをトークンに使用します。たとえば、大きな文字列の開始オフセットと終了オフセットを、スカラーの巨大なプールよりも XS を介してより効果的に管理できる場合です。PDL
速度だけでなく、メモリ管理の側面もあります。
長期的には、このアプローチの一部をコア Perl に統合する提案があります。最初は、スレッド化でのデータ共有を改善する機会を提供するためです: http://openparallel.com/2011/07/05/a-newを参照してください。 -hope-for-effective-safe-data-sharing-between-threads-in-perl/ .