perl脚本性能在调用另一个脚本时行为不端

时间:2017-03-02 07:23:56

标签: performance perl system parent-child

我有一个perl脚本调用另一个perl脚本来运行正常的数据库查询。

但有时当内部脚本调用如此频繁时,它不会在数据库中插入正确的值,在调试中我发现它无法从数据库中获取所有记录,这在插入新的计算值之前是最重要的。

我使用system()方法调用子脚本。这将等到孩子的过程结束,但接着是在孩子经常打电话时行为不端的方式。在正常情况下,主脚本将保持30秒,这将导致正确执行子脚本。

任何人都可以有任何建议来调试我的代码或任何解决此类问题的方法。

1 个答案:

答案 0 :(得分:1)

为每个数据库插入运行Perl脚本非常无效。

您应该注意到Perl将首先编译被调用的脚本(每次调用它时) - 因此会产生很大的开销。

使用OOP并将DB处理代码放入单独的类中会好得多 - 它只会在运行时编译一次。或者您可以使用模块并将DB代码放入函数中,它们也只能编译一次。看看"使用"附注

例如:带模块的简单程序

main_file.pl

use strict;
use DB_code;
DB_code::insert($data);

DB_code.pm

package DB_code;
use strict;

sub insert {
    my $data = shift;
    print "Your data has been inserted!";
}

1;