3 c/c-diet-static-null c/c-diet-dynamic-null \
4 c/c-libc-static-null c/c-libc-dynamic-null \
5 c/c++-static-null c/c++-dynamic-null \
6 haskell/null-single haskell/null-threaded \
7 ocaml/null-byte ocaml/null-opt \
11 dash/null.dash bash/null.bash \
12 lua/null.lua51 lua/null.lua52 lua/null.luajit \
13 perl/null.pl ruby/null.rb \
14 php/null.php php/null.php-n \
15 tcl/null.tcl84 tcl/null.tcl85 tcl/null.tcl86 \
16 python/null.py26 python/null.py26-s \
17 python/null.py27 python/null.py27-s \
18 python/null.py32 python/null.py32-s \
22 cycles,instructions,branches,branch-misses \
23 dtlb-loads,dtlb-load-misses,itlb-loads,itlb-load-misses \
24 cycles,instructions,cache-references,cache-misses \
25 cycles,instructions,stalled-cycles-frontend,stalled-cycles-backend
39 diet gcc -static -O2 -Wall -o $@ $<
43 diet gcc -O2 -Wall -o $@ $<
47 gcc -static -O2 -Wall -o $@ $<
51 gcc -O2 -Wall -o $@ $<
55 g++ -static -O2 -Wall -o $@ $<
59 g++ -O2 -Wall -o $@ $<
62 haskell/null-single: haskell/null.hs
63 ghc --make -O2 -Wall -o $@ $<
66 haskell/null-threaded: haskell/null.hs
67 ghc --make -O2 -Wall -threaded -o $@ $<
70 ocaml/null-byte: ocaml/null.ml
72 # no stripping as this is not an elf file
74 ocaml/null-opt: ocaml/null.ml
78 java/null-gcj: java/Null.java
79 gcj-4.6 --main=Null -o $@ $<
82 log: $(PROGS) $(SCRIPTS) Makefile
84 for prog in $(PROGS) $(SCRIPTS); do \
86 for metric in $(METRICS); do \
87 LC_ALL=C perf stat -e "$$metric" -r $(REPS) -o log --append ./$$prog; \
95 cd haskell && rm -f *.hi *.o
96 cd ocaml && rm -f *.cmo *.cmi *.cmx *.o
97 cd java && rm -f *.class