-
Notifications
You must be signed in to change notification settings - Fork 26
/
Benchmarks.mk
60 lines (51 loc) · 2.25 KB
/
Benchmarks.mk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# p5-sisimai/Benchmarks.mk
# ____ _ _ _
# | __ ) ___ _ __ ___| |__ _ __ ___ __ _ _ __| | _____ _ __ ___ | | __
# | _ \ / _ \ '_ \ / __| '_ \| '_ ` _ \ / _` | '__| |/ / __| | '_ ` _ \| |/ /
# | |_) | __/ | | | (__| | | | | | | | | (_| | | | <\__ \_| | | | | | <
# |____/ \___|_| |_|\___|_| |_|_| |_| |_|\__,_|_| |_|\_\___(_)_| |_| |_|_|\_\
# -------------------------------------------------------------------------------------------------
SHELL := /bin/sh
HERE := $(shell pwd)
NAME := Sisimai
PERL ?= perl
MKDIR := mkdir -p
LS := ls -1
CP := cp
EMAILROOTDIR := set-of-emails
PUBLICEMAILS := $(EMAILROOTDIR)/maildir/bsd
DOSFORMATSET := $(EMAILROOTDIR)/maildir/dos
MACFORMATSET := $(EMAILROOTDIR)/maildir/mac
PRIVATEMAILS := $(EMAILROOTDIR)/private
SPEEDTESTDIR := tmp/emails-for-speed-test
COMMANDARGVS := -I./lib -MSisimai
TOBEEXECUTED := 'Sisimai->rise(shift, delivered => 1, vacation => 1)' $(PUBLICMAILS)
HOWMANYMAILS := $(PERL) $(COMMANDARGVS) -le 'print scalar @{ Sisimai->rise(shift, delivered => 1, vacation => 1) }'
# -------------------------------------------------------------------------------------------------
.PHONY: clean
emails-for-speed-test:
@ rm -fr ./$(SPEEDTESTDIR)
@ $(MKDIR) $(SPEEDTESTDIR)
@ $(CP) -Rp $(PUBLICEMAILS)/*.eml $(SPEEDTESTDIR)/
@ test -d $(PRIVATEMAILS) && find $(PRIVATEMAILS) -type f -name '*.eml' -exec $(CP) -Rp {} $(SPEEDTESTDIR)/ \; || true
speed-test: emails-for-speed-test
@ echo `$(HOWMANYMAILS) $(SPEEDTESTDIR)` emails in $(SPEEDTESTDIR)
@ echo -------------------------------------------------------------------
@ uptime
@ echo -------------------------------------------------------------------
@ n=1; while [ "$$n" -le "10" ]; do \
time $(PERL) $(COMMANDARGVS) -lE $(TOBEEXECUTED) $(SPEEDTESTDIR) > /dev/null; \
sleep 2; \
n=`expr $$n + 1`; \
done
profile:
@ uptime
$(PERL) -d:NYTProf $(COMMANDARGVS) -lE $(TOBEEXECUTED) $(SPEEDTESTDIR) > /dev/null
nytprofhtml
loc:
@ for v in `find lib -type f -name '*.pm'`; do \
perl -nle 'last if $$_ =~ /\A1;\z/; next if $$_ =~ /\A[\s\t]*(?:#+.+)?\z/; print 1' $$v; \
done | awk '{ s += $$1 } END { print s }'
clean:
find . -type f -name 'nytprof*' -ctime +1 -delete
rm -f -r $(SPEEDTESTDIR)