1

我想从 Java 高效地执行 Perl 代码。Perl 的目的主要是执行正则表达式匹配(在某些测试中,Perl 比 Java 更有效)

到目前为止,我发现使用它的可能性: http://metacpan.org/pod/Inline::Java:: PerlInterpreter

另一种选择是在 java 中使用 Runtime.exec() 来调用 Perl。

什么是最高效的解决方案?一个比另一个有优势吗?我真的看不到任何东西,除了 PerlInterpreter 仍然是实验性的,我不知道这是否会改变。你知道从 Java 调用 Perl 的任何其他选项吗?

4

2 回答 2

7

为什么你不喜欢你想要使用 Perl 的正则表达式功能的类java.util.regex.Patternjava.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 回答