⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avg-stats.pl

📁 P2P模拟器
💻 PL
字号:
#!/usr/bin/perl -wuse strict;my $argsfile;if ($ARGV[0] eq "--args") {  shift(@ARGV);  $argsfile = shift(@ARGV);}my $log = shift;if (!defined($log)) {  die "hi stupid, did you tell me where your merged-stat file is?\n";}open FILE, "$log" or die "cannot open $log\n";my $h = <FILE>;chop $h;my @oldheader = split(/ /,$h);my @headers;my $seedpos;for (my $i = 0; $i <= $#oldheader; $i++) {  if ($oldheader[$i]=~/param(\d+)\)seed/) {    $seedpos = $1;  }elsif (defined($seedpos) && ($oldheader[$i]=~/param(\d+)\)([\w\d]+)/)) {    my $tmp = $1-1;    push @headers, "param${tmp})$2";  }else{    push @headers, $oldheader[$i];  }}if (!defined($seedpos)) {  print STDERR "no seed, nothing to average!\n";  exit(0);}else{  print STDERR "SEED position $seedpos\n";}my %totals;my %totalnum;my $newpline;my $totalv;my $totalv_num;while (1) {  my $pline = <FILE>;  if (!defined($pline)) {    last;  }  chop $pline;  my $vline = <FILE>;  if (!defined($vline)) {    die print "$log: format wrong\n";  }  chop $vline;  $newpline = "";  my @params = split(/ /,$pline);  for (my $i = 0; $i <= $#params; $i++) {    if ($i != $seedpos) {      $newpline .= "$params[$i] ";    }  }  print STDERR ">>$newpline\n";  my $totalv = $totals{$newpline};  my $totalv_num = $totalnum{$newpline};  if (defined($totalv)) {    my @v = split(/ /,$vline);    die "wrong wrong wrong\n" if ($#v != $#$totalv);    for (my $i = 0; $i <= $#v; $i++) {      $totalv->[$i] += $v[$i];    }    $totalnum{$newpline} = ($totalv_num+1);  }else{    my @v = split(/ /,$vline);    $totals{$newpline} = \@v;    $totalnum{$newpline} = 1;  }}for (my $i = 0; $i <= $#headers; $i++) {  print "$headers[$i] ";}print "\n";foreach $newpline (keys %totals) {  print "$newpline\n";  $totalv_num = $totalnum{$newpline};  $totalv = $totals{$newpline};  for (my $j = 0; $j <= $#$totalv; $j++) {    my $avg = $totalv->[$j]/$totalv_num;    if ($avg =~/\./) {      printf("%.3f ",$avg);    }else{      print "$avg ";    }  }  print "\n";}print STDERR "averaging roughly $totalv_num different seeds\n";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -