XSとInline::Cモジュールの使用の違いは何ですか?これはこの質問の誰かによって言及され、私は興味をそそられました。
2 に答える
Inline :: CはXSを生成し、生成されたモジュールをビルドします。過去のビルドをキャッシュしますが、実行時にこれを行います。
Inline :: Cの方が使いやすいかもしれませんが、いくつかの欠点があります。初めて実行すると、起動が遅くなり、実行時にファイルを作成するためのアクセス許可が必要になり、モジュールをコンパイルするためのツールが必要になります。さらに、システム管理者がインストールするのが難しくなります。
利点は、生成されたXSを取得して、物事が形になり始めたらInline::Cを排除できることです。これにより、プロトタイピングに役立ちます。
Inlineは、Perlのコンパイルと同時にCコードをコンパイルし、ソースコードが変更されるたびに再コンパイルされます。XSは一度コンパイルされ、バイナリはライブラリのように.soファイルとして保存されます。
PerlはCで記述されているため、XSはネイティブのPerlタイプとサブルーチンメカニズムを使用します。XSを使用するモジュールは、組み込みの言語機能とほぼ同じくらい効率的に実行されます。インラインでいくつかのことを行うのはより困難であり、コードを呼び出したり、コードから戻ったりするときに変換ステップがあります。そうは言っても、Inlineは必要のないときに再コンパイルしないという優れた仕事をしており、Inlineコードへの変換とInlineコードからの変換は、パフォーマンスに目立った影響を与える可能性はほとんどありません。
最後に、XSの記述は、モジュールをパッケージ化することを前提としています。必要なPerlの根性とモジュールのパッケージングに関する多くのセットアップと知識があります。PerlからCライブラリを呼び出す必要がある場合は、インラインを使用することをお勧めします。