diff options
Diffstat (limited to 'hask-io')
| -rw-r--r-- | hask-io/Makefile | 46 | ||||
| -rw-r--r-- | hask-io/mini.c | 14 | ||||
| -rw-r--r-- | hask-io/mini.hs | 3 |
3 files changed, 63 insertions, 0 deletions
diff --git a/hask-io/Makefile b/hask-io/Makefile new file mode 100644 index 0000000..e6e1da6 --- /dev/null +++ b/hask-io/Makefile @@ -0,0 +1,46 @@ +# +# Some GHC flags explained +# +# -v verbose mode +# -O2 level 2 optimizations +# -rtsopts allow +RTS flags +# -prof enable basic time and allocation profiling +# -auto-all cost centers on all top level functions +# (you can also add them via the SCC pragma) +# -caf-all generate data for CAFs (constant applicative forms) +# t +# -fforce-recomp force recompilation +# +# Notes: you will obtain the profiling versions of dependancies via: +# stack install --profile [libraryname] +# +# -fprof-auto replaced -auto-all +# -fprof-cafs replaced -caf-all +# + +build-prof: + stack ghc --profile -- -rtsopts -prof -fprof-auto -fprof-cafs -O2 base64.hs + +# +# Some +RTS flags +# +# -p profiling +# -K set stack limit +# -hc extract heap profile +# -hy allocation by type +# -hd allocation by constructor +# -iN sampling frequency in seconds. e.g. -i0.01 +# -ddump-simpl generate core version +# +# Note: render the heap profile as graph with: hp2ps -e8in -c file.hp +# + +run-prof: + cat random.bin | ./base64 +RTS -p -K100M > /dev/null + + +test-mini-hask: + #stack ghc -- -rtsopts -prof -fprof-auto -fprof-cafs -O mini.hs -o mini_hask_exe + stack ghc -- -O mini.hs -o mini_hask_exe +test-mini-c: + gcc -O3 mini.c -o mini_c_exe diff --git a/hask-io/mini.c b/hask-io/mini.c new file mode 100644 index 0000000..eb5ba46 --- /dev/null +++ b/hask-io/mini.c @@ -0,0 +1,14 @@ +#include <stdio.h> +int main(){ + char buf[2048]; + int a=0; + while(1){ + size_t sz=fread(&buf,1,2048,stdin); + if(!sz)break; + for(size_t i=0;i<sz;i++){ + a+=buf[i]; + a%=256; + } + } + printf("%i\n",a); +} diff --git a/hask-io/mini.hs b/hask-io/mini.hs new file mode 100644 index 0000000..7d73bfe --- /dev/null +++ b/hask-io/mini.hs @@ -0,0 +1,3 @@ +import qualified Data.ByteString.Lazy as B +main = B.getContents>>=print.show.f + where f = B.foldl1' (+) |
