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

时间:2009-08-26 04:43:38

标签: perl

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

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

而不是使用模块

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

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

2 个答案:

答案 0 :(得分:10)

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

do './anotherscript.pl'

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

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

答案 1 :(得分:2)

您可以通过创建modulinos来同时拥有模块和脚本。