Binary sizes have gone up
Some time between 10 Dec and 16 Dec, binary sizes have increased. Here is a nofib comparison between the two.
Some binary sizes go up by 5%!
- I looked at one module:
real/fem/Assemble_stiffness
. That module's binary goes up by 20%. It turned out to be entirely due to calls to(!!)
which now take aCallStack
argument. - Ditto
real/hidden/Hide.hs
whose compiled code gets 20% bigger. Here the culprit is theCallStack
argument tominimum
.
The culprit is probably
commit 31bf380f3925d72a3369978d28d02aaae31f75ef
Author: Oleg Grenrus <oleg.grenrus@iki.fi>
Date: Wed May 26 05:03:52 2021 +0300
Use HasCallStack and error in GHC.List and .NonEmpty
In addition to providing stack traces, the scary HasCallStack will
hopefully make people think whether they want to use these functions,
i.e. act as a documentation hint that something weird might happen.
A single metric increased, which doesn't visibly
use any method with `HasCallStack`.
What is surprising is that every binary goes up by 0.5%. Why is that? Maybe the standard libraries somehow get bigger?
Half a percent may not seem much, but it's a tax we are paying for every single binary, forever. Yet this patch is only supposed to penalise code that uses these naughty functions.
Program Size Allocs Runtime Elapsed TotalMem
--------------------------------------------------------------------------------
CS +0.7% -0.0% 0.120 0.120 0.0%
CSD +0.7% -0.0% -4.6% -4.6% 0.0%
FS +0.7% -0.0% -5.1% -5.1% 0.0%
S +0.7% -0.0% -4.7% -4.7% 0.0%
VS +0.7% -0.0% -2.0% -2.1% 0.0%
VSD +0.7% -0.3% 0.010 0.010 0.0%
VSM +0.7% -0.0% 0.145 0.145 0.0%
anna +0.8% +0.0% -6.2% -6.2% 0.0%
ansi +0.7% -0.0% +0.4% +0.4% 0.0%
atom +0.6% 0.0% -0.1% -0.1% 0.0%
awards +0.6% -0.0% +1.6% +1.6% 0.0%
banner +5.6% -0.1% +5.3% +5.4% 0.0%
ben-raytrace ----- ----- ----- ----- -----
bernouilli +0.7% -0.0% -20.8% -20.8% 0.0%
binary-trees +0.6% -0.0% -4.0% -4.0% 0.0%
boyer +0.6% -0.0% -1.7% -1.7% 0.0%
boyer2 +0.6% -0.0% +2.2% +2.1% 0.0%
bspt +0.6% -0.0% -6.2% -6.1% 0.0%
cacheprof +5.4% 0.0% -6.7% -6.7% 0.0%
calendar +5.5% +0.6% +3.9% +3.9% 0.0%
cichelli +0.7% -0.0% -1.2% -1.2% 0.0%
circsim +0.7% -0.0% +0.5% +0.5% 0.0%
clausify +0.6% -0.0% -0.1% -0.1% 0.0%
comp_lab_zift +0.7% -0.0% -10.1% -10.1% 0.0%
compress +0.7% -0.0% -6.4% -6.5% 0.0%
compress2 +0.6% -0.0% -7.2% -7.2% 0.0%
constraints +0.7% -0.0% +0.8% +0.7% 0.0%
cryptarithm1 +0.6% 0.0% +0.7% +0.7% 0.0%
cryptarithm2 +0.6% -0.0% +1.0% +1.1% 0.0%
cse +5.5% 0.0% -2.8% -2.8% 0.0%
digits-of-e1 +0.6% -0.0% -10.0% -10.0% 0.0%
digits-of-e2 +0.7% -0.0% -7.7% -7.8% 0.0%
dom-lt +0.5% -0.0% -0.4% -0.4% 0.0%
eliza +0.7% -0.0% -4.5% -4.5% 0.0%
event +0.7% -12.0% -4.9% -4.9% 0.0%
exact-reals +0.7% -0.0% +2.1% +2.1% 0.0%
exp3_8 +0.6% -0.0% -11.2% -11.2% 0.0%
expert +5.6% -0.0% -0.2% -0.2% 0.0%
fannkuch-redux +0.7% -0.2% -2.7% -2.7% 0.0%
fasta +0.6% 0.0% -6.0% -5.7% 0.0%
fem +0.7% -2.8% -9.6% -9.7% 0.0%
fft +0.7% -0.0% -6.7% -6.7% 0.0%
fft2 +0.7% -0.2% +1.3% +1.3% 0.0%
fibheaps +0.6% 0.0% -3.2% -3.1% 0.0%
fish +0.6% 0.0% -11.8% -11.8% 0.0%
fluid +5.4% -0.0% -11.8% -11.8% 0.0%
fulsom +0.6% -0.0% -10.9% -10.9% 0.0%
gamteb +0.6% -0.0% -8.5% -8.5% 0.0%
gcd +0.7% -0.0% -7.6% -7.6% 0.0%
gen_regexps +0.7% -0.0% -4.7% -4.7% 0.0%
genfft +0.6% -0.0% -0.4% -0.4% 0.0%
gg +0.7% -0.0% -7.1% -7.1% 0.0%
grep +0.7% -0.0% -6.3% -6.3% 0.0%
hidden +5.6% 0.0% -10.9% -10.8% 0.0%
hpg +5.4% -0.1% -4.9% -4.9% 0.0%
ida +0.7% -0.0% -0.9% -0.9% 0.0%
infer +0.6% -0.0% -9.0% -9.0% 0.0%
integer +0.6% 0.0% -3.4% -3.4% 0.0%
integrate +0.7% (stdout) (stdout) (stdout) (stdout)
k-nucleotide +0.6% -0.0% +7.0% +7.0% 0.0%
kahan +0.7% 0.0% -0.3% -0.3% 0.0%
knights +0.7% -0.0% -5.0% -5.0% 0.0%
lambda +0.7% -0.0% -6.5% -6.4% 0.0%
last-piece +0.7% -0.0% -6.3% -6.3% 0.0%
lcss +0.6% -0.0% -7.9% -7.8% 0.0%
life +0.7% -0.0% -5.2% -5.2% 0.0%
lift +0.7% -0.0% -5.9% -5.9% 0.0%
linear +5.6% -0.1% -1.7% -1.7% 0.0%
listcompr +0.7% -0.0% -5.4% -5.4% 0.0%
listcopy +0.7% -0.0% -8.2% -8.2% 0.0%
maillist +0.7% -0.2% -6.3% -6.0% 0.0%
mandel +0.7% 0.0% -3.8% -3.8% 0.0%
mandel2 +0.6% 0.0% -2.6% -2.6% 0.0%
mate +0.7% -0.0% -8.7% -8.7% 0.0%
minimax +0.7% 0.0% -6.1% -6.1% 0.0%
mkhprog +0.7% 0.0% +5.2% +5.1% 0.0%
multiplier +0.7% -0.0% -7.2% -7.2% 0.0%
n-body +0.7% -0.1% -2.4% -2.4% 0.0%
nucleic2 +5.5% 0.0% -8.0% -8.0% 0.0%
para +0.7% 0.0% -2.7% -2.6% 0.0%
paraffins +0.6% -0.0% -8.6% -8.6% 0.0%
parser +0.7% -0.0% -4.4% -4.3% 0.0%
parstof +0.6% -0.0% -6.5% -6.3% 0.0%
pic +0.6% 0.0% -5.4% -5.4% 0.0%
pidigits +0.7% 0.0% -4.1% -4.0% 0.0%
power +0.6% 0.0% -10.6% -10.6% 0.0%
pretty +0.7% -0.2% 0.000 0.000 0.0%
primes +0.7% -0.0% -24.2% -24.2% 0.0%
primetest +0.6% -0.0% -6.2% -6.2% 0.0%
prolog +5.5% -0.0% -5.6% -5.6% 0.0%
puzzle +0.6% 0.0% -6.3% -6.3% 0.0%
queens +0.6% -0.0% +0.5% +0.5% 0.0%
reptile +0.6% -0.0% -6.0% -6.0% 0.0%
reverse-complem +0.6% 0.0% -4.7% -4.4% 0.0%
rewrite +0.7% -0.0% -9.7% -9.7% 0.0%
rfib +0.7% -0.1% -0.1% -0.1% 0.0%
rsa +0.7% -0.0% -4.9% -4.9% 0.0%
scc +0.7% -0.2% 0.000 0.000 0.0%
sched +0.6% -0.0% -8.9% -8.9% 0.0%
scs +5.4% +0.0% -5.8% -5.8% 0.0%
simple +0.6% 0.0% -7.3% -7.3% 0.0%
smallpt ----- ----- ----- ----- -----
solid +0.7% -0.0% -6.3% -6.3% 0.0%
sorting +0.6% -0.0% -6.1% -6.1% 0.0%
spectral-norm +0.7% -0.0% -4.8% -4.8% 0.0%
sphere +0.7% -0.0% -3.6% -3.6% 0.0%
symalg +0.6% -0.0% -4.4% -4.3% 0.0%
tak +0.7% -0.1% +1.4% +1.4% 0.0%
transform +0.7% 0.0% -7.3% -7.3% 0.0%
treejoin +0.6% -0.0% -9.6% -9.6% 0.0%
typecheck +0.7% 0.0% -2.6% -2.6% 0.0%
veritas +5.2% -0.0% -7.8% -7.8% 0.0%
wang +0.7% -0.0% -8.6% -8.6% 0.0%
wave4main +0.6% -0.0% -4.4% -4.3% 0.0%
wheel-sieve1 +0.7% -0.0% -6.9% -6.9% 0.0%
wheel-sieve2 +0.7% -0.0% +2.4% +2.6% 0.0%
x2n1 +0.7% -0.3% +5.4% +5.4% 0.0%
--------------------------------------------------------------------------------
Min +0.5% -12.0% -24.2% -24.2% 0.0%
Max +5.6% +0.6% +7.0% +7.0% 0.0%
Geometric Mean +1.2% -0.2% -4.8% -4.8% -0.0%