-O vs. -O2
Roman Leshchinskiy
rl at cse.unsw.edu.au
Sun May 9 22:23:17 EDT 2010
On 07/05/2010, at 19:53, Simon Marlow wrote:
> On 05/05/2010 12:24, Roman Leshchinskiy wrote:
>> Whenever I do cabal sdist on one of my projects, I get this warning:
>>
>> Distribution quality warnings: 'ghc-options: -O2' is rarely needed.
>> Check that it is giving a real benefit and not just imposing longer
>> compile times on your users.
>>
>> This finally got me curious and I did a nofib run to compare -O to
>> -O2. The results are below (this is with the current HEAD).
>
> What were the compile-time results?
Gosh, I thought I included those.
-1 s.d. ----- +1.1%
+1 s.d. ----- +16.3%
Average ----- +8.4%
The full results are below. IMO, the increases are rather negligible.
Roman
Compile Times
-------------------------------------------------------------------------------
Program log-O log-O2
-------------------------------------------------------------------------------
anna
AbsConc3 0.23 +17.4%
AbstractEval2 0.08 0.08
AbstractMisc 0.11 0.12
AbstractVals2 0.23 +17.4%
Apply 0.10 0.12
BarakiConc3 0.17 0.18
BarakiMeet 0.11 0.12
BaseDefs 0.87 +8.0%
Constructors 0.17 0.21
Dependancy 0.24 +25.0%
DomainExpr 0.12 0.13
EtaAbstract 0.12 0.13
FrontierDATAFN2 0.19 0.19
FrontierGENERIC 0.16 0.16
FrontierMisc2 0.10 0.11
Inverse 0.16 0.16
LambdaLift5 0.42 +4.8%
Main 0.31 +0.0%
MakeDomains 0.10 0.10
Monster 0.12 0.12
MyUtils 0.13 0.13
Parser2 0.64 +7.8%
PrettyPrint 0.13 0.13
PrintResults 0.23 +8.7%
ReadTable 0.16 0.17
Simplify 0.10 0.10
SmallerLattice 0.36 +13.9%
StrictAn6 0.59 +11.9%
SuccsAndPreds2 0.24 +4.2%
TExpr2DExpr 0.10 0.10
TypeCheck5 0.70 +14.3%
Utils 0.34 +14.7%
ansi
Main 0.20 0.20
atom
Main 0.16 0.16
awards
Main 0.16 0.16
QSort 0.04 0.05
banner
Main 0.29 +3.4%
bernouilli
Main 0.15 0.15
boyer
Main 0.42 +4.8%
boyer2
Checker 0.06 0.07
Lisplikefns 0.15 0.16
Main 0.08 0.08
Rewritefns 0.07 0.09
Rulebasetext 0.11 0.12
bspt
BSPT 0.20 0.23
Euclid 0.32 +3.1%
EuclidGMS 0.15 0.16
GeomNum 0.11 0.11
Init 0.13 0.13
Input 0.40 +5.0%
Interface 0.10 0.10
Interpret 0.12 0.13
Libfuns 0.03 0.03
MGRlib 0.09 0.09
Main 0.06 0.06
Merge 0.13 0.14
Params 0.09 0.09
Prog 0.06 0.06
Rationals 0.18 0.19
Render 0.12 0.12
Stdlib 0.09 0.10
cacheprof
Arch_x86 0.68 +2.9%
Generics 0.19 0.20
Main 2.13 +11.3%
calendar
Main 0.24 +8.3%
cichelli
Auxil 0.15 0.17
Interval 0.03 0.03
Key 0.04 0.04
Main 0.05 0.05
Prog 0.12 0.12
circsim
Main 0.63 +7.9%
clausify
Main 0.23 +4.3%
comp_lab_zift
Main 0.68 +20.6%
compress
BinConv 0.09 0.09
BinTest 0.08 0.08
Decode 0.16 0.16
Defaults 0.05 0.05
Encode 0.14 0.16
Main 0.06 0.06
PTTrees 0.04 0.04
Uncompress 0.07 0.07
compress2
Encode 0.14 0.39
Main 0.08 0.08
WriteRoutines 0.10 0.12
constraints
Main 0.34 +8.8%
cryptarithm1
Main 0.09 0.09
cryptarithm2
Main 0.22 +13.6%
MonadState 0.10 0.10
MonadTrans 0.03 0.03
cse
Main 0.25 +4.0%
StateMonad 0.07 0.07
eliza
Main 0.39 +2.6%
event
Main 0.30 +10.0%
exp3_8
Main 0.15 0.15
expert
Knowledge 0.11 0.11
Main 0.15 0.15
Match 0.06 0.07
Result 0.04 0.04
Search 0.09 0.10
Table 0.14 0.17
fem
Assemble_loadve 0.07 0.07
Assemble_stiffn 0.10 0.12
Basics 0.06 0.06
DB_interface 0.14 0.15
Database 0.13 0.14
Degrees 0.17 0.19
Displacement 0.09 0.09
Elemforce 0.07 0.07
Elemstif 0.09 0.10
Main 0.06 0.06
Matrix 0.18 0.20
Pre_assemble 0.08 0.08
PrintSource 0.19 0.19
Printuvwforce 0.09 0.09
VBlldecomp 0.15 0.17
VBmatrix 0.16 0.17
Vector 0.13 0.15
fft
Main 0.45 +13.3%
fft2
Complex_Vectors 0.08 0.08
Fourier 0.18 0.20
Main 0.13 0.13
fibheaps
Main 0.35 +8.6%
fish
Main 0.37 +2.7%
fluid
Asb_routs 0.10 0.10
C_matrix 0.16 0.16
Chl_decomp 0.18 0.24
Chl_method 0.20 0.22
Chl_routs 0.37 +51.4%
Defs 0.03 0.03
Elefac 0.07 0.08
Input_proc 0.28 +32.1%
Jcb_method 0.16 0.17
L_matrix 0.07 0.08
Main 0.08 0.09
Min_degree 0.12 0.14
Norm 0.07 0.07
Rhs_Asb_routs 0.16 0.17
S_Array 0.50 +18.0%
S_matrix 0.15 0.15
TG_iter 0.22 +0.0%
Tol_cal 0.06 0.07
fulsom
Csg 0.29 +3.4%
Interval 0.30 +6.7%
Kolor 0.17 0.17
Main 0.11 0.11
Matrix 0.17 0.18
Oct 0.11 0.11
Patchlevel 0.03 0.03
Quad 0.10 0.11
Raster 0.13 0.13
Shapes 0.07 0.08
Types 0.19 0.21
Vector 0.08 0.08
gamteb
Compton 0.11 0.11
Consts 0.05 0.05
Distance 0.10 0.13
GamtebMain 0.07 0.07
GamtebType 0.03 0.03
InitTable 0.14 0.15
Main 0.07 0.07
Output 0.15 0.16
Pair 0.08 0.08
PhotoElec 0.06 0.06
RoulSplit 0.06 0.06
TransPort 0.12 0.12
Utils 0.15 0.20
gcd
Main 0.13 0.14
gen_regexps
Main 0.13 0.13
genfft
Main 0.40 +5.0%
gg
Activity 0.17 0.19
GRIP 0.33 +0.0%
Graph 0.40 +12.5%
Main 0.21 +0.0%
PSlib 0.23 +0.0%
Parse 0.10 0.10
Pool 0.13 0.14
Spark 0.15 0.16
StdLib 0.11 0.12
grep
Main 0.29 +10.3%
Parsers 0.09 0.09
StringMatch 0.25 +4.0%
hidden
Comparing 0.12 0.14
Cross 0.08 0.08
EdgePlate 0.06 0.06
Geometric 0.11 0.11
Hide 0.11 0.13
Main 0.07 0.07
Matrices 0.03 0.03
Memo 0.39 +7.7%
MyIO 0.09 0.09
Numbers 0.13 0.13
Postscript 0.07 0.07
Preds 0.08 0.08
Rotate 0.06 0.06
Solve 0.08 0.08
Vectors 0.14 0.14
hpg
Config 0.07 0.07
Env 0.17 0.17
GenExp 0.25 +4.0%
GenType 0.11 0.11
GenVal 0.11 0.11
Main 0.26 +3.8%
Types 0.32 +9.4%
Utils 0.07 0.07
ida
Main 0.39 +23.1%
infer
Environment 0.12 0.12
FiniteMap 0.08 0.08
Infer 0.09 0.10
InferMonad 0.11 0.11
Main 0.11 0.11
MaybeM 0.04 0.04
MyList 0.04 0.04
Parse 0.15 0.15
Shows 0.05 0.05
State 0.04 0.04
StateX 0.05 0.05
Substitution 0.08 0.08
Term 0.17 0.18
Type 0.17 0.18
integer
Main 0.15 0.15
integrate
Main 0.15 0.15
knights
ChessSetArray 0.24 +8.3%
ChessSetList 0.17 0.19
KnightHeuristic 0.12 0.18
Main 0.15 0.15
Queue 0.06 0.06
Sort 0.10 0.10
lcss
Main 0.16 0.16
life
Main 0.14 0.15
lift
LambdaLift 0.38 +10.5%
Main 0.07 0.07
Print 0.19 0.20
Test 0.08 0.08
Utilities 0.12 0.13
listcompr
Main 0.33 +3.0%
listcopy
Main 0.33 +3.0%
maillist
Main 0.17 0.20
mandel
Main 0.12 0.12
Mandel 0.12 0.12
PortablePixmap 0.06 0.06
mandel2
Main 0.19 0.22
minimax
Board 0.16 0.17
Game 0.10 0.10
Main 0.05 0.05
Prog 0.04 0.04
Tree 0.07 0.07
Wins 0.04 0.04
mkhprog
Main 0.35 +2.9%
multiplier
Main 0.51 +3.9%
nucleic2
Main 0.60 +1.7%
RA 0.44 +4.5%
RC 0.43 +4.7%
RG 0.18 0.18
RU 0.46 +4.3%
Types 0.03 0.03
para
Main 0.66 +24.2%
paraffins
Main 0.28 +17.9%
parser
Main 1.75 +15.4%
parstof
Main 2.80 +6.8%
pic
ChargeDensity 0.08 0.08
Consts 0.04 0.04
ElecField 0.13 0.15
Main 0.07 0.07
Pic 0.10 0.10
PicType 0.03 0.03
Potential 0.15 0.16
PushParticle 0.12 0.13
Utils 0.29 +10.3%
power
Main 0.46 +10.9%
pretty
CharSeq 0.06 0.08
Main 0.07 0.07
Pretty 0.15 0.17
primes
Main 0.11 0.12
primetest
IntLib 0.09 0.09
Main 0.07 0.08
MyRandom 0.06 0.06
Prime 0.12 0.15
prolog
Engine 0.06 0.08
Interact 0.07 0.08
Main 0.18 0.18
Parse 0.09 0.10
PrologData 0.22 +4.5%
Subst 0.08 0.08
Version 0.03 0.03
puzzle
Main 0.30 +10.0%
queens
Main 0.11 0.12
reptile
Auxprogfuns 0.28 +7.1%
Diff 0.06 0.06
Drawfuns 0.10 0.10
Geomfuns 0.14 0.14
Help 0.11 0.11
Interstate 0.03 0.03
Layout 0.31 +6.5%
Main 0.07 0.08
Mgrfuns 0.10 0.10
Progfuns 0.46 +4.3%
Psfuns 0.09 0.09
Rational 0.09 0.10
Tilefuns 0.15 0.16
rewrite
Main 0.61 +4.9%
rfib
Main 0.10 0.10
rsa
Main 0.09 0.09
Rsa 0.12 0.12
scc
Digraph 0.05 0.05
Main 0.07 0.07
sched
Main 0.37 +8.1%
scs
LinearAlgebra 0.60 +35.0%
Main 0.17 0.18
Parse 0.29 +3.4%
ParseLib 0.14 0.15
RandomFix 0.10 0.11
Simulate 0.54 +16.7%
Types 0.09 0.09
simple
Main 3.46 +11.3%
solid
Main 1.89 +0.5%
sorting
Main 0.08 0.08
Sort 0.16 0.18
sphere
Main 0.69 +14.5%
symalg
Ast 0.03 0.03
BasicNumber 0.27 +0.0%
BasicNumberAppr 0.13 0.14
Env 0.05 0.05
Eval 0.13 0.14
Lexer 0.10 0.10
Main 0.10 0.10
Op 0.07 0.08
Parser 0.14 0.19
Print 0.12 0.12
RealM 0.20 0.20
tak
Main 0.10 0.10
transform
Main 1.58 +11.4%
treejoin
Main 0.17 0.19
typecheck
Main 0.51 +7.8%
veritas
Attributes 0.05 0.05
Auto 0.07 0.07
Build_Tm 0.16 0.16
Build_itrm 0.23 +0.0%
Core_database 0.54 +11.1%
Core_datatype 0.12 0.12
Dcore 0.09 0.09
DerivedRules 0.14 0.16
Display 0.30 -3.3%
Editor 0.09 0.09
Edlib 0.12 0.12
Getops 0.07 0.07
Globals 0.05 0.05
Goals 0.27 +11.1%
Kernel 0.70 +1.4%
Lookup 0.03 0.03
Main 0.29 +3.4%
Parse 0.91 +16.5%
Sub_Core1 0.24 +4.2%
Sub_Core2 0.19 0.20
Sub_Core3 0.18 0.19
Sub_Core4 0.25 +4.0%
Tacticals 0.10 0.10
Tactics 0.19 0.20
Tags 0.07 0.07
ThmTactics 0.66 +6.1%
Token 0.15 0.17
Tree 0.17 0.18
Type_defs 0.07 0.07
Unparse 0.32 +9.4%
Vtslib 0.06 0.06
X_interface 0.41 +4.9%
wang
Main 0.34 +5.9%
wave4main
Main 0.51 +0.0%
wheel-sieve1
Main 0.16 0.18
wheel-sieve2
Main 0.16 0.18
x2n1
Main 0.12 0.13
-1 s.d. ----- +1.1%
+1 s.d. ----- +16.3%
Average ----- +8.4%
More information about the Glasgow-haskell-users
mailing list