X-Git-Url: https://git.jankratochvil.net/?p=massrebuild.git;a=blobdiff_plain;f=dtneededsize;h=6603bde485dfe6dfdf9f489fcac76bc77bd23e9d;hp=0b15cc588bc2b40875375c3fec8c9ab9e7398741;hb=380847aaf5e4609066d7cee35f8cbb8d418a494a;hpb=2d73156f688891ca057e8e151633826bd3b85d76;ds=inline diff --git a/dtneededsize b/dtneededsize index 0b15cc5..6603bde 100755 --- a/dtneededsize +++ b/dtneededsize @@ -4,6 +4,8 @@ use warnings; use File::Basename qw(&dirname); use File::Find; use Data::Dumper; +use Statistics::Basic::StdDev; +use List::Util; $|=1; sub readfile { @@ -16,6 +18,14 @@ sub readfile { return $r; } +my %R; +if (($ARGV[0]||"") eq "-r") { + shift; + my $r=readfile shift; + $R{$1}=1 while $r=~s/^(.*?)\n//; + die $r if $r; +} + my %D; # ==> build/Cadence-1.0.0-0.12.20200504git5787908.fc33.src.rpm.dtneeded <== # /usr/lib/debug/.dwz/Cadence isdwzcommon 479079 NA @@ -24,6 +34,7 @@ my %D; # ==> build/CVector-1.0.3.1-21.fc33.src.rpm.dtneeded <== # /usr/lib64/libCVector-1.0.3.so.2.0.0 nodwzcommon 28088 28896 for my $dtneededfn (glob "build/*.dtneeded") { + next if %R && !$R{($dtneededfn=~m{^build/(.*?)-[^-]*-[^-]*$})[0]."-debuginfo"}; local *F; open F,$dtneededfn or die "$dtneededfn: $1"; local $_; @@ -112,7 +123,10 @@ find { #} my $dwzsizeall=0; +my $dwzsizeduplall=0; my $dtsizeall=0; +my @ratioall; +my @ratioduplall; my $computed=0; BINFN: for my $binfn (@DEBUG) { # warn "$binfn...\n".Dumper([sort @{$F{$binfn}{"needed"}}]); @@ -151,6 +165,7 @@ BINFN: for my $binfn (@DEBUG) { } #warn Dumper $binfn,\%l; my $dwzsizetot=0; + my $dwzsizedupltot=0; my $dtsizetot=0; my %dwzcommons; for my $l (keys(%l)) { @@ -169,23 +184,30 @@ BINFN: for my $binfn (@DEBUG) { my $dwzsize=$ref->[1]; die if !defined $dwzsize; $dwzsizetot+=$dwzsize; + $dwzsizedupltot+=$dwzsize; $computed++; my $dwzcommon=$ref->[0]; next if $dwzcommon eq "nodwzcommon"; die if $dwzcommon eq "isdwzcommon"; - next if $dwzcommons{$dwzcommon}++; + my $duplicate=$dwzcommons{$dwzcommon}++; my $dwzcommonref=$D{$dwzcommon}; die if !$dwzcommonref; die if $dwzcommonref->[0] ne "isdwzcommon"; die if $dwzcommonref->[2] ne "NA"; my $dwzcommonsize=$dwzcommonref->[1]; - $dwzsizetot+=$dwzcommonsize; + $dwzsizetot+=$dwzcommonsize if !$duplicate; + $dwzsizedupltot+=$dwzcommonsize; } print "$binfn: dwzsizetot=$dwzsizetot dtsizetot=$dtsizetot\n"; warn "$binfn: ".Dumper(\%dwzcommons); $dwzsizeall+=$dwzsizetot; + $dwzsizeduplall+=$dwzsizedupltot; $dtsizeall+=$dtsizetot; + push @ratioall ,$dwzsizetot /$dtsizetot; + push @ratioduplall,$dwzsizedupltot/$dtsizetot; # warn "$binfn done\n".Dumper([sort keys(%l)]); } -print "dwzsizeall=$dwzsizeall dtsizeall=$dtsizeall =".$dwzsizeall/$dtsizeall."\n"; -print "computed=$computed of DEBUG=".(0+@DEBUG)."\n"; +print "dwzsizeall =$dwzsizeall" ." dtsizeall=$dtsizeall =".$dwzsizeall /$dtsizeall." avg=".List::Util::sum(@ratioall )/@ratioall ." stddev=".Statistics::Basic::stddev(\@ratioall )."\n"; +print "dwzsizeduplall=$dwzsizeduplall"." dtsizeall=$dtsizeall =".$dwzsizeduplall/$dtsizeall." avg=".List::Util::sum(@ratioduplall)/@ratioduplall." stddev=".Statistics::Basic::stddev(\@ratioduplall)."\n"; +print "computed=$computed of DEBUG=".(0+@DEBUG)." =".$computed/@DEBUG."\n"; +#print Dumper \@ratioall;