调用另一个脚本时 perl 脚本性能异常
perl script performance misbehave while calling another script
我有一个 perl
脚本调用另一个 perl
脚本来执行正常的数据库查询。
但有时当内部脚本调用如此频繁时,它不会在数据库中插入正确的值,在调试中我发现它无法从数据库中获取所有记录,这在插入新的计算值之前是最重要的值。
我使用了system()
方法来调用子脚本。这将等到子进程结束,但是在频繁调用子进程时如何可能出现行为不端。在正常情况下,主脚本将保持 30 秒,这会导致子脚本的正确执行。
任何人都可以对调试我的代码或此类问题的任何解决方案提出任何建议。
运行 每个数据库插入的 Perl 脚本都非常低效。
您应该注意到 Perl 将首先编译调用的脚本(每次调用它时)- 因此它会产生大量开销。
使用 OOP 并将 DB 处理代码放入单独的 class 中要好得多 - 它只会在 运行 时编译一次。或者你可以使用模块并将数据库代码放入函数中,它们也只会被编译一次。看看 "use" 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;
我有一个 perl
脚本调用另一个 perl
脚本来执行正常的数据库查询。
但有时当内部脚本调用如此频繁时,它不会在数据库中插入正确的值,在调试中我发现它无法从数据库中获取所有记录,这在插入新的计算值之前是最重要的值。
我使用了system()
方法来调用子脚本。这将等到子进程结束,但是在频繁调用子进程时如何可能出现行为不端。在正常情况下,主脚本将保持 30 秒,这会导致子脚本的正确执行。
任何人都可以对调试我的代码或此类问题的任何解决方案提出任何建议。
运行 每个数据库插入的 Perl 脚本都非常低效。
您应该注意到 Perl 将首先编译调用的脚本(每次调用它时)- 因此它会产生大量开销。
使用 OOP 并将 DB 处理代码放入单独的 class 中要好得多 - 它只会在 运行 时编译一次。或者你可以使用模块并将数据库代码放入函数中,它们也只会被编译一次。看看 "use" 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;