`statistics` is slow to compile with optimisations
I wonder why this hasn't come up before. I'm waiting for statistics
to compile everytime I run a benchmark suite of a Cabal package.
Here's a log of cabal build | ts -i '[%.s]' | sort -r
:
[1.070011] Resolving dependencies...
[0.680485] Build profile: -w ghc-8.10.2 -O1
[0.000041] In order, the following will be built (use -v for more details):
[0.000013] - statistics-0.15.2.0 (lib) (first run)
[0.023511] Configuring library for statistics-0.15.2.0..
[0.935243] Preprocessing library for statistics-0.15.2.0..
[0.007746] Building library for statistics-0.15.2.0..
[0.193375] [ 1 of 46] Compiling Statistics.Correlation.Kendall ( Statistics/Correlation/Kendall.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Correlation/Kendall.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Correlation/Kendall.dyn_o )
[1.359492] [ 2 of 46] Compiling Statistics.Distribution.Poisson.Internal ( Statistics/Distribution/Poisson/Internal.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Poisson/Internal.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Poisson/Internal.dyn_o )
[0.280449] [ 3 of 46] Compiling Statistics.Function ( Statistics/Function.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Function.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Function.dyn_o )
[5.007071] [ 4 of 46] Compiling Statistics.Internal ( Statistics/Internal.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Internal.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Internal.dyn_o )
[0.131425] [ 5 of 46] Compiling Statistics.Quantile ( Statistics/Quantile.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Quantile.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Quantile.dyn_o )
[4.826962] [ 6 of 46] Compiling Statistics.Sample.Histogram ( Statistics/Sample/Histogram.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/Histogram.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/Histogram.dyn_o )
[0.392638] [ 7 of 46] Compiling Statistics.Sample.Internal ( Statistics/Sample/Internal.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/Internal.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/Internal.dyn_o )
[0.066157] [ 8 of 46] Compiling Statistics.Distribution ( Statistics/Distribution.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution.dyn_o )
[0.380140] [ 9 of 46] Compiling Statistics.Distribution.Uniform ( Statistics/Distribution/Uniform.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Uniform.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Uniform.dyn_o )
[0.875726] [10 of 46] Compiling Statistics.Distribution.Transform ( Statistics/Distribution/Transform.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Transform.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Transform.dyn_o )
[1.036295] [11 of 46] Compiling Statistics.Distribution.StudentT ( Statistics/Distribution/StudentT.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/StudentT.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/StudentT.dyn_o )
[0.697533] [12 of 46] Compiling Statistics.Distribution.Poisson ( Statistics/Distribution/Poisson.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Poisson.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Poisson.dyn_o )
[0.631153] [13 of 46] Compiling Statistics.Distribution.Hypergeometric ( Statistics/Distribution/Hypergeometric.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Hypergeometric.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Hypergeometric.dyn_o )
[0.937574] [14 of 46] Compiling Statistics.Distribution.Geometric ( Statistics/Distribution/Geometric.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Geometric.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Geometric.dyn_o )
[1.390666] [15 of 46] Compiling Statistics.Distribution.Gamma ( Statistics/Distribution/Gamma.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Gamma.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Gamma.dyn_o )
[1.509184] [16 of 46] Compiling Statistics.Distribution.FDistribution ( Statistics/Distribution/FDistribution.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/FDistribution.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/FDistribution.dyn_o )
[0.882477] [17 of 46] Compiling Statistics.Distribution.DiscreteUniform ( Statistics/Distribution/DiscreteUniform.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/DiscreteUniform.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/DiscreteUniform.dyn_o )
[0.744813] [18 of 46] Compiling Statistics.Distribution.ChiSquared ( Statistics/Distribution/ChiSquared.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/ChiSquared.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/ChiSquared.dyn_o )
[1.156785] [19 of 46] Compiling Statistics.Distribution.CauchyLorentz ( Statistics/Distribution/CauchyLorentz.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/CauchyLorentz.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/CauchyLorentz.dyn_o )
[0.780151] [20 of 46] Compiling Statistics.Distribution.Binomial ( Statistics/Distribution/Binomial.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Binomial.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Binomial.dyn_o )
[0.856580] [21 of 46] Compiling Statistics.Distribution.Beta ( Statistics/Distribution/Beta.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Beta.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Beta.dyn_o )
[0.864413] [22 of 46] Compiling Statistics.Sample.Powers ( Statistics/Sample/Powers.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/Powers.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/Powers.dyn_o )
[4.161917] [23 of 46] Compiling Statistics.Test.Internal ( Statistics/Test/Internal.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/Internal.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/Internal.dyn_o )
[1.072633] [24 of 46] Compiling Statistics.Transform ( Statistics/Transform.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Transform.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Transform.dyn_o )
[5.985289] [25 of 46] Compiling Statistics.Sample.KernelDensity ( Statistics/Sample/KernelDensity.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/KernelDensity.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/KernelDensity.dyn_o )
[2.227087] [26 of 46] Compiling Statistics.Types.Internal ( Statistics/Types/Internal.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Types/Internal.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Types/Internal.dyn_o )
[0.014778] [27 of 46] Compiling Statistics.Sample ( Statistics/Sample.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample.dyn_o )
[3.227535] [28 of 46] Compiling Statistics.Sample.Normalize ( Statistics/Sample/Normalize.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/Normalize.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/Normalize.dyn_o )
[1.028034] [29 of 46] Compiling Statistics.Sample.KernelDensity.Simple ( Statistics/Sample/KernelDensity/Simple.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/KernelDensity/Simple.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Sample/KernelDensity/Simple.dyn_o )
[2.328237] [30 of 46] Compiling Statistics.Distribution.Normal ( Statistics/Distribution/Normal.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Normal.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Normal.dyn_o )
[1.529894] [31 of 46] Compiling Statistics.Types ( Statistics/Types.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Types.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Types.dyn_o )
[7.706122] [32 of 46] Compiling Statistics.Test.Types ( Statistics/Test/Types.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/Types.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/Types.dyn_o )
[1.862732] [33 of 46] Compiling Statistics.Test.StudentT ( Statistics/Test/StudentT.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/StudentT.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/StudentT.dyn_o )
[1.962193] [34 of 46] Compiling Statistics.Test.KruskalWallis ( Statistics/Test/KruskalWallis.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/KruskalWallis.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/KruskalWallis.dyn_o )
[2.699567] [35 of 46] Compiling Statistics.Test.KolmogorovSmirnov ( Statistics/Test/KolmogorovSmirnov.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/KolmogorovSmirnov.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/KolmogorovSmirnov.dyn_o )
[8.729056] [36 of 46] Compiling Statistics.Test.ChiSquared ( Statistics/Test/ChiSquared.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/ChiSquared.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/ChiSquared.dyn_o )
[0.702577] [37 of 46] Compiling Statistics.Resampling ( Statistics/Resampling.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Resampling.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Resampling.dyn_o )
[8.905451] [38 of 46] Compiling Statistics.Regression ( Statistics/Regression.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Regression.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Regression.dyn_o )
[2.109512] [39 of 46] Compiling Statistics.ConfidenceInt ( Statistics/ConfidenceInt.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/ConfidenceInt.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/ConfidenceInt.dyn_o )
[0.097455] [40 of 46] Compiling Statistics.Test.WilcoxonT ( Statistics/Test/WilcoxonT.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/WilcoxonT.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/WilcoxonT.dyn_o )
[1.960516] [41 of 46] Compiling Statistics.Test.MannWhitneyU ( Statistics/Test/MannWhitneyU.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/MannWhitneyU.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Test/MannWhitneyU.dyn_o )
[2.566408] [42 of 46] Compiling Statistics.Resampling.Bootstrap ( Statistics/Resampling/Bootstrap.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Resampling/Bootstrap.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Resampling/Bootstrap.dyn_o )
[0.898772] [43 of 46] Compiling Statistics.Distribution.Laplace ( Statistics/Distribution/Laplace.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Laplace.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Laplace.dyn_o )
[0.857490] [44 of 46] Compiling Statistics.Distribution.Exponential ( Statistics/Distribution/Exponential.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Exponential.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Distribution/Exponential.dyn_o )
[0.824832] [45 of 46] Compiling Statistics.Correlation ( Statistics/Correlation.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Correlation.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Correlation.dyn_o )
[4.528026] [46 of 46] Compiling Statistics.Autocorrelation ( Statistics/Autocorrelation.hs, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Autocorrelation.o, /home/sgraf-local/code/hs/statistics/dist-newstyle/build/x86_64-linux/ghc-8.10.2/statistics-0.15.2.0/build/Statistics/Autocorrelation.dyn_o )
The deltas in [] are in seconds and apply to the previous line. It appears that
-
Statistics.Function
takes 5s to compile! That's a good regression test. Same forStatistics.Quantile
. -
Statistics.Types
takes around 8s, which seems comparatively fair given that it uses TH and derives some stuff. -
Statistics.Test.KolmogorovSmirnov
wins with 9s, which just is too much. - Similarly,
Statistics.Resampling
burns almost 9s, which seems like far too much! There's some Aeson instance and general deriving, but the data type seems completely benign. -
Statistics.Transform
are just some DFTs which take 6s to compile
Most of the compile-time killers have SPECIALISE
pragmas which probably account for some code duplication. But surely it shouldn't be this bad?