我刚刚用 DProf 分析了我的代码:
Total Elapsed Time = 9.969922 Seconds
User+System Time = 0.049922 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
40.0 0.020 0.020 2 0.0100 0.0100 main::difference
40.0 0.020 0.020 3 0.0067 0.0066 main::BEGIN
0.00 - -0.000 1 - - DynaLoader::dl_install_xsub
0.00 - -0.000 1 - - Data::Dumper::bootstrap
0.00 - -0.000 1 - - strict::import
0.00 - -0.000 1 - - warnings::BEGIN
0.00 - -0.000 1 - - warnings::import
0.00 - -0.000 1 - - bytes::import
0.00 - -0.000 1 - - strict::bits
0.00 - -0.000 1 - - DynaLoader::dl_load_file
0.00 - -0.000 1 - - DynaLoader::dl_undef_symbols
0.00 - -0.000 1 - - DynaLoader::dl_find_symbol
0.00 - -0.000 1 - - overload::BEGIN
0.00 - -0.000 2 - - warnings::register::mkMask
0.00 - -0.000 2 - - Exporter::import
所以我的difference
子程序占用了大约 40% 的时间,并BEGIN
占用了另外 40% 的时间。我不太确定其他 9.8 秒发生了什么。谁能向我解释一下 Perl 在剩下的时间里在做什么?
基本上,我的代码接受两个数组,执行一组差异,然后写入文件。文件不太大(23,028 个字符)。这是我的difference
子程序,如果你好奇的话:
sub difference {
my @array1 = @{$_[0]};
my @array2 = @{$_[1]};
my %in_array1 = map {$_ => 1} @array1;
my @diff = grep {not $in_array1{$_}} @array2;
return @diff;
}