source: tests/zombies/string-perf/Makefile @ fefd77a

enumpthread-emulationqualifiedEnum
Last change on this file since fefd77a was fefd77a, checked in by Michael Brooks <mlbrooks@…>, 11 months ago

String perf append test now compares stretch phase (alloc=fresh) with steady-state (alloc=reuse). Make gets rid of explicit list of targets. Running these with copori up to mean-500 lenght.

  • Property mode set to 100644
File size: 2.9 KB
Line 
1
2CFABUILD = ~/cfa2/build-perf
3LIBCFA = $(CFABUILD)/libcfa/*/src/.libs/libcfa.so
4
5CFA = $(CFABUILD)/driver/cfa
6PERFFLAGS_CFA = -nodebug -O2
7PERFFLAGS_CXX = -DNDEBUG -O2
8
9
10# function: convert to upper case
11define uc
12$(shell echo $(1) | tr  '[:lower:]' '[:upper:]')
13endef
14
15# function: project numbered element of filename named by hyphen-delimited tuple
16# (call hyphProj,q-w-e-r.txt,1) is Q
17define ucHyphProj
18$(call uc,$(word $(2),$(subst -, ,$(basename $(1)))))
19endef
20
21# function: cross two lists, adding hyphen delimiters
22# (call hyphCross,a b c,1 2) is a-1 a-2 b-1 b-2 c-1 c-2
23define hyphCross
24$(foreach x,$(1),$(foreach xs,$(2),$(x)-$(xs)))
25endef
26
27define hyphCross3
28$(call hyphCross,$(1),$(call hyphCross,$(2),$(3)))
29endef
30
31define hyphCross4
32$(call hyphCross,$(1),$(call hyphCross3,$(2),$(3),$(4)))
33endef
34
35define hyphCross5
36$(call hyphCross,$(1),$(call hyphCross4,$(2),$(3),$(4),$(5)))
37endef
38
39OPERATIONS=pta peq
40ALLOCS=reuse fresh
41CFA_APILEVELS=hl ll
42CFA_SHARINGS=share noshare
43PLATFORMS=cfa stl buhr94
44
45ifneq ($(filter cfa,$(PLATFORMS)),)
46        CFA_PERFPROGS=$(call hyphCross5,perfexp-cfa,$(CFA_APILEVELS),$(OPERATIONS),$(CFA_SHARINGS),$(ALLOCS))
47endif
48
49ifneq ($(filter stl,$(PLATFORMS)),)
50        STL_PERFPROGS=$(call hyphCross3,perfexp-stl,$(OPERATIONS),$(ALLOCS))
51endif
52
53ifneq ($(filter buhr94,$(PLATFORMS)),)
54        BUHR94_PERFPROGS=$(call hyphCross3,perfexp-buhr94,$(OPERATIONS),$(ALLOCS))
55endif
56
57PERFPROGS = $(CFA_PERFPROGS) $(STL_PERFPROGS) $(BUHR94_PERFPROGS)
58
59all : $(PERFPROGS)
60
61
62
63perfexp-cfa-%: CFA_APILEVEL=$(call ucHyphProj,$@,3)
64perfexp-cfa-%: OPERATION=$(call ucHyphProj,$@,4)
65perfexp-cfa-%: CFA_SHARING=$(call ucHyphProj,$@,5)
66perfexp-cfa-%: ALLOC=$(call ucHyphProj,$@,6)
67perfexp-cfa-%: prog.cfa $(LIBCFA)
68        $(CFA) $(PERFFLAGS_CFA) $< -o $@ -DIMPL_CFA_$(CFA_APILEVEL)_$(CFA_SHARING) -DOP_$(OPERATION) -DALLOC_$(ALLOC)
69
70perfexp-stl-%: OPERATION=$(call ucHyphProj,$@,3)
71perfexp-stl-%: ALLOC=$(call ucHyphProj,$@,4)
72perfexp-stl-%: prog.cfa
73        $(CXX) -xc++ $(PERFFLAGS_CXX) $< -o $@ -DIMPL_STL -DOP_$(OPERATION) -DALLOC_$(ALLOC)
74
75perfexp-buhr94-%.o: OPERATION=$(call ucHyphProj,$@,3)
76perfexp-buhr94-%.o: ALLOC=$(call ucHyphProj,$@,4)
77perfexp-buhr94-%.o: prog.cfa
78        $(CXX) -xc++ -c $(PERFFLAGS_CXX) $< -o $@ -DIMPL_BUHR94 -DOP_$(OPERATION) -DALLOC_$(ALLOC)
79
80buhr94-string.o:
81        $(CXX) -xc++ -c $(PERFFLAGS_CXX) ~/usys1/sm/string/StringSharing/src/string.cc -o $@
82
83buhr94-VbyteSM.o:
84        $(CXX) -xc++ -c $(PERFFLAGS_CXX) ~/usys1/sm/string/StringSharing/src/VbyteSM.cc -o $@
85
86perfexp-buhr94-% : perfexp-buhr94-%.o buhr94-string.o buhr94-VbyteSM.o
87        $(CXX) $(PERFFLAGS_CXX) $^ -o $@
88
89clean:
90        rm -f *.o perfexp*
91
92MEASURE = $(PERFPROGS)
93CORPORI = corpus-100-*-1.txt
94
95measurement: $(MEASURE)
96        tofile=measurement-`date '+%F--%H-%M-%S'`.csv ; \
97        echo $$tofile ; \
98        for prog in $(MEASURE) ; do \
99            for corpus in $(CORPORI) ; do \
100                        corpusbody=`cat $$corpus` ; \
101                        printed=`./$$prog 100 10 $$corpusbody` ; \
102                        echo $$prog,$$corpus,$$printed  >>  $$tofile ; \
103                        echo $$prog,$$corpus,$$printed  ; \
104                done ; \
105        done
Note: See TracBrowser for help on using the repository browser.