1

Java から Perl コードを効率的に実行したいと考えています。Perl の主な目的は、正規表現マッチングを実行することです (一部のテストでは、Perl は Java よりも効率的にそれを実行できました)。

これまでのところ、これを使用する可能性を見つけました: http://metacpan.org/pod/Inline::Java::PerlInterpreter

もう 1 つのオプションは、Java で Runtime.exec() を使用して Perl を呼び出すことです。

最もパフォーマンスの高いソリューションは何ですか? 一方が他方よりも有利ですか?PerlInterpreter はまだ実験段階であり、変更されるかどうかはわかりません。Java から Perl を呼び出す他のオプションを知っていますか?

4

2 に答える 2

7

java.util.regex.PatternPerl の正規表現機能を使用しjava.util.regex.Matcherたいクラスに満足できないのはなぜですか? ;-)

于 2012-08-21T17:04:07.047 に答える
5

正規表現を処理するために Java から Perl を実行するとパフォーマンスが向上するという、非常に特殊なケースである必要があります。Perl が個々の正規表現を Java よりも高速に処理できるかどうかに関係なく、Java から Perl を起動するためのオーバーヘッドと、フォークされたプロセスを正しく管理するための Java のスレッド オーバーヘッドがあります。

ほとんどの場合、Java で直接正規表現を処理することでパフォーマンスが向上します。ただし、別のプロセスを呼び出すための起動コストを軽減するのに役立つクエリ対象のデータが非常に大きい場合を除きます。

推奨される手順:

  • 最初に Java でソリューションを実装します。
  • Java ソリューションがニーズに対して遅すぎて、正規表現部分がボトルネックである場合は、他のオプションを検討してください。
  • Perl を実行するには、Runtime.exec または Process が問題なく動作しますが、必要なスレッドを実行して STDOUT と STDERR をドレインするようにしてください。
于 2012-08-21T17:25:32.700 に答える