Skip to content

Instantly share code, notes, and snippets.

View osa1's full-sized avatar

Ömer Sinan Ağacan osa1

View GitHub Profile
@osa1
osa1 / gist:6afbc7cea6ca8af558ba
Created March 29, 2016 02:54
haskell-src-exts timings
============================Language.Haskell.Exts.Parser============================
CodeGen 124.0 ms 184.037 mb 35.2272727273% of total time
Simplifier1 49.0 ms 63.273 mb 13.9204545455% of total time
Renamer/typechecker 28.0 ms 28.564 mb 7.95454545455% of total time
Simplifier5 28.0 ms 41.254 mb 7.95454545455% of total time
Simplifier3 21.0 ms 31.001 mb 5.96590909091% of total time
Simplifier6 20.0 ms 30.269 mb 5.68181818182% of total time
Simplifier 16.0 ms 26.285 mb 4.54545454545% of total time
Simplifier4 10.0 ms 15.356 mb 2.84090909091% of total time
=========================Text.XML.HXT.Arrow.ProcessDocument=========================
CodeGen 64.0 ms 90.34 mb 54.2372881356% of total time
Simplifier1 11.0 ms 13.808 mb 9.32203389831% of total time
Renamer/typechecker 10.0 ms 14.711 mb 8.47457627119% of total time
Simplifier6 7.0 ms 10.528 mb 5.93220338983% of total time
Simplifier3 3.0 ms 3.692 mb 2.54237288136% of total time
Simplifier4 3.0 ms 3.643 mb 2.54237288136% of total time
Simplifier5 3.0 ms 3.96 mb 2.54237288136% of total time
Demand analysis 2.0 ms 3.882 mb 1.69491525424% of total time
@osa1
osa1 / analyse_cabal_log.py
Last active March 29, 2016 09:08
A little Python script to analyze Cabal logs and generate timing info of modules
import re
import sys
TIMING_RE = re.compile(r"^!!! (.+) \[(.*)\]: .* (\d+\.\d+) milliseconds, .* (\d+\.\d+) megabytes")
def sort_cmp_time(v1, v2):
return cmp(v1[1][0], v2[1][0])
def sort_cmp_alloc(v1, v2):
return cmp(v1[1][1], v2[1][1])
$ git diff
diff --git a/ghc/ghc.mk b/ghc/ghc.mk
index c0c78bd..8133960 100644
--- a/ghc/ghc.mk
+++ b/ghc/ghc.mk
@@ -119,6 +119,8 @@ ifeq "$(GhcProfiled)" "YES"
ghc/stage2/build/tmp/$(ghc_stage2_PROG) : $(compiler_stage2_p_LIB)
"inplace/bin/ghc-stage1" -hisuf hi -osuf o -hcsuf hc -static -O -H64m -Wall -this-package-key integer-gmp-1.0.0.1 -hide-all-packages -i -ilibraries/integer-gmp/src/ -ilibraries/integer-gmp/dist-install/build -ilibraries/integer-gmp/dist-install/build/autogen -Ilibraries/integer-gmp/dist-install/build -Ilibraries/integer-gmp/dist-install/build/autogen -Ilibraries/integer-gmp/include -optP-include -optPlibraries/integer-gmp/dist-install/build/autogen/cabal_macros.h -package-id ghc-prim-0.5.0.0 -this-package-key integer-gmp -Wall -XHaskell2010 -O -dcore-lint -no-user-package-db -rtsopts -Wno-deprecated-flags -Wnoncanonical-monad-instances -odir libraries/integer-gmp/dist-install/build -hidir libraries/integer-gmp/dist-install/build -stubdir libraries/integer-gmp/dist-install/build -dynamic-too -c libraries/integer-gmp/src//GHC/Integer/Type.hs -o libraries/integer-gmp/dist-install/build/GHC/Integer/Type.o -dyno libraries/integer-gmp/dist-install/build/GHC/Integer/Type.dyn_o
@osa1
osa1 / Unboxed.hs
Last active January 5, 2016 15:57 — forked from vagarenko/Unboxed.hs
Unboxed polymorphic types
{-# LANGUAGE MagicHash, TypeFamilies #-}
module Data.Unboxed where
import GHC.Exts
--------------------------------------------------------------------------------
-- Hash (#) types are second-class citizens in GHC (in our case, we can't use
-- them in associated types / type families), so here we add dummy types that
-- stand for "unboxed" variants of some standard GHC types.
make -C ./tests all
make[1]: Entering directory '/home/omer/haskell/ghc_2/testsuite/tests'
python2 ../driver/runtests.py -e ghc_compiler_always_flags="'-fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-package-db -rtsopts -fno-warn-tabs -fno-warn-missed-specialisations'" -e ghc_debugged=False -e ghc_with_native_codegen=1 -e ghc_with_vanilla=1 -e ghc_with_dynamic=1 -e ghc_with_profiling=0 -e ghc_with_threaded_rts=1 -e ghc_with_dynamic_rts=1 -e ghc_with_interpreter=1 -e ghc_unregisterised=0 -e ghc_dynamic_by_default=False -e ghc_dynamic=True -e ghc_with_smp=1 -e ghc_with_llvm=0 -e windows=False -e darwin=False -e in_tree_compiler=True -e clean_only=False --rootdir=. --configfile=../config/ghc -e 'config.confdir="../config"' -e 'config.platform="x86_64-unknown-linux"' -e 'config.os="linux"' -e 'config.arch="x86_64"' -e 'config.wordsize="64"' -e 'default_testopts.cleanup=""' -e 'config.timeout=int() or config.timeout' -e 'config.exeext=""' -e 'config.top="/home/omer/haskell/ghc_2/testsuite"' --co
{-# LANGUAGE ScopedTypeVariables, TypeFamilies #-}
module Main where
import Data.Proxy
class SpecList a where
type List a :: *
slNil :: Proxy a -> List a
This file has been truncated, but you can view the full file.
raco setup: version: 6.2.0.3 [3m]
raco setup: installation name: snapshot
raco setup: variants: 3m
raco setup: main collects: /home/omer/racket-6.2.0.3/collects
raco setup: collects paths:
raco setup: /home/omer/.racket/snapshot/collects
raco setup: /home/omer/racket-6.2.0.3/collects
raco setup: main pkgs: /home/omer/racket-6.2.0.3/share/pkgs
raco setup: pkgs paths:
raco setup: /home/omer/racket-6.2.0.3/share/pkgs
"number-theory.rkt":
making #<path:/home/omer/racket-6.2.0.3/share/pkgs/math-lib/math/number-theory.rkt>
making #<path:/home/omer/racket-6.2.0.3/share/pkgs/math-lib/math/private/number-theory/divisibility.rkt>
making #<path:/home/omer/racket-6.2.0.3/share/pkgs/math-lib/math/private/number-theory/modular-arithmetic.rkt>
making #<path:/home/omer/racket-6.2.0.3/share/pkgs/math-lib/math/private/number-theory/modular-arithmetic-base.rkt>
making #<path:/home/omer/racket-6.2.0.3/share/pkgs/math-lib/math/private/syntax-utils.rkt>
making #<path:/home/omer/racket-6.2.0.3/share/pkgs/math-lib/math/private/number-theory/number-theory.rkt>
making #<path:/home/omer/racket-6.2.0.3/share/pkgs/math-lib/math/private/base/base-random.rkt>
making #<path:/home/omer/racket-6.2.0.3/share/pkgs/math-lib/math/private/number-theory/types.rkt>
making #<path:/home/omer/racket-6.2.0.3/share/pkgs/math-lib/math/private/number-theory/small-primes.rkt>