Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 调用另一个脚本时perl脚本性能异常_Performance_Perl_System_Parent Child - Fatal编程技术网

Performance 调用另一个脚本时perl脚本性能异常

Performance 调用另一个脚本时perl脚本性能异常,performance,perl,system,parent-child,Performance,Perl,System,Parent Child,我有一个perlscript,它调用另一个perl脚本,该脚本执行正常的数据库查询 但有时,当内部脚本调用如此频繁时,它将无法在数据库中插入正确的值,在调试中,我发现它无法从数据库中获取所有记录,这在插入新的计算值之前是最重要的 我使用系统方法调用子脚本。这将一直等到子进程结束,但在频繁调用child时,如何可能出现行为不端。在正常情况下,主脚本将保持30秒,从而正确执行子脚本 谁能对调试我的代码或解决此类问题有什么建议 为每个DB插入运行Perl脚本是非常无效的 您应该注意到,每次调用被调用的

我有一个perlscript,它调用另一个perl脚本,该脚本执行正常的数据库查询

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

我使用系统方法调用子脚本。这将一直等到子进程结束,但在频繁调用child时,如何可能出现行为不端。在正常情况下,主脚本将保持30秒,从而正确执行子脚本


谁能对调试我的代码或解决此类问题有什么建议

为每个DB插入运行Perl脚本是非常无效的

您应该注意到,每次调用被调用的脚本时,Perl都会首先编译它——因此它会产生大量开销

最好使用OOP,并在运行时将DB处理代码放入单独的类中(只编译一次)。或者您可以使用模块并将DB代码放入函数中,它们也只能编译一次。看看使用pragma

例如:带有模块的简单程序

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;

可能是竞争条件,即操作的结果取决于调度每个进程或线程的细节。如果没有代码可查看,这几乎不可能诊断。您的shift键似乎已断开…请在适当的情况下使用大写字母。这会使你的问题更容易阅读。