当我用system()调用Perl程序时,为什么会看到延迟?

Ana*_*dan 1 perl

场景1:我有一个包装器Perl脚本,它使用另一个Perl模块并在该模块中调用一个函数.

场景2:现在我有相同的包装脚本,模块实现为Perl脚本.在这里,我只是简单地调用而不是使用模块system("perl anotherscript.pl").

两者都做同样的功能,但我看到第二种情况有点延迟.

为什么会这样?它是预期的还是与我的代码有关?

Chr*_*utz 10

在第一种情况下,您有Perl解释器的开销.在第二个,你有两个 Perl解释器的开销.如果您想要第二种方法,请考虑该do函数的备用和少用版本(请参阅参考资料perldoc -f do):

do './anotherscript.pl'
Run Code Online (Sandbox Code Playgroud)

如果Perl解释器设计得很好(它可能是),这可能会比第二个例子快得多,尽管我不知道它与第一个例子相比如何.如果你想要效率,基准.

编辑:如果你不关心两者之间(可能是微不足道的)性能差异,我建议你只使用一个模块.它将使您的代码更加有用,因为虽然脚本只能在一个部分中重复使用,但模块可以在任意多个单独的部分中重复使用.