2011-07-29 15 views

答えて

13

インライン:: CはXSを生成し、生成されたモジュールをビルドします。実行時にこれを行いますが、過去のビルドをキャッシュします。

インライン:: Cはおそらく使いやすいですが、いくつかの欠点があります。最初に実行すると、起動が遅くなり、実行時にファイルを作成するためのアクセス権が必要になり、モジュールをコンパイルするためのツールが必要になります。さらに、システム管理者がインストールするのが難しくなります。

生成されたXSを取得して、インライン:: Cを削除することができます。これはプロトタイピングに便利です。

+3

「XS」の難しい部分は、perl APIを理解することです。 XSまたはインライン:: Cのどちらを使用するにしても、あなたはそれをしなければならないでしょう。 – jrockway

+1

プロトタイプ作成にはInline :: C、デプロイメントにはXSを使用するための実験的なInlineX :: XSです。 – tsee

2

Perlがコンパイルされると同時にインラインでCコードがコンパイルされ、ソースコードが変更されるたびに再コンパイルされます。 XSは一度コンパイルされ、バイナリはライブラリのような.soファイルとして保存されます。

PerlはCで書かれているので、XSはネイティブのPerl型とサブルーチンの仕組みを使用します。 XSを使用するモジュールは、組み込みの言語機能と同じくらい効率的に動作します。インラインではいくつかのことを行うのが難しく、コードを呼び出すときやコードから戻るときに変換ステップがあります。つまり、インラインでは必要ないときに再コンパイルしないようにして、インラインコードの変換は目立ったパフォーマンスヒットではないでしょう。

最後に、XSを書くと、モジュールをパッケージしていることが前提です。 Perlの勇気とモジュールのパッケージ化が必要な設定と知識がたくさんあります。 PerlからCライブラリを呼び出すだけであれば、Inlineを使う方が良いでしょう。

+1

Reは "ソースコードが変更されるたびに再コンパイルされます"、それは良いことです。 XSを直接使用しているときにソースコードが変更されたときでも、再コンパイルする必要がありますが、自動ではありません。 – ikegami

+1

Re "コードを呼び出したり返すときに変換ステップがあります。 XSとInline :: Cの両方に同じ変換ステップが必然的に存在します。実際には、インライン:: CはXSにすべての変換をさせる。 – ikegami

関連する問題