From 37e1c3102be15f1e57805e828993156e3492d764 Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Sun, 27 Feb 2011 14:48:25 -0800 Subject: Use FDO for benchmarks, which gives a 10-15% improvement. --- Makefile | 8 ++++++-- perf-tests.sh | 31 ++++++++++++++++--------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 2c85d57..09eb1ad 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ # * -DUPB_UNALIGNED_READS_OK: makes code smaller, but not standard compliant .PHONY: all lib clean tests test benchmarks benchmark descriptorgen +.PHONY: clean_leave_profile # Default rule: just build libupb. all: lib @@ -110,9 +111,9 @@ ALLSRC=$(CORE) $(STREAM) $(BENCHMARKS_SRC) $(TESTS_SRC) # Rules. ####################################################################### -clean: +clean_leave_profile: rm -rf $(LIBUPB) $(LIBUPB_PIC) - rm -rf $(call rwildcard,,*.o) $(call rwildcard,,*.lo) $(call rwildcard,,*.gcno) $(call rwildcard,,*.dSYM) + rm -rf $(call rwildcard,,*.o) $(call rwildcard,,*.lo) $(call rwildcard,,*.dSYM) rm -rf benchmark/google_messages.proto.pb benchmark/google_messages.pb.* benchmarks/b.* benchmarks/*.pb* rm -rf $(TESTS) tests/t.* rm -rf src/descriptor.pb @@ -120,6 +121,9 @@ clean: rm -rf lang_ext/lua/upb.so cd lang_ext/python && python setup.py clean --all +clean: clean_leave_profile + rm -rf $(call rwildcard,,*.gcno) $(call rwildcard,,*.gcda) + # Core library (libupb.a). SRC=$(CORE) $(STREAM) LIBUPB=src/libupb.a diff --git a/perf-tests.sh b/perf-tests.sh index 003f866..8630182 100755 --- a/perf-tests.sh +++ b/perf-tests.sh @@ -11,24 +11,25 @@ fi rm -f perf-tests.out -if [ x`uname -m` = xx86_64 ]; then +run_with_flags () { + FLAGS=$1 + NAME=$2 + make clean - echo "-DNDEBUG -m32" > perf-cppflags + echo "$FLAGS -fprofile-generate" > perf-cppflags make upb_benchmarks - make benchmark | sed -e 's/^/plain32./g' | tee -a perf-tests.out + make benchmark - make clean - echo "-DNDEBUG -fomit-frame-pointer -m32" > perf-cppflags + make clean_leave_profile + echo "$FLAGS -fprofile-use" > perf-cppflags make upb_benchmarks - make benchmark | sed -e 's/^/omitfp32./g' | tee -a perf-tests.out -fi + make benchmark | sed -e "s/^/$NAME./g" | tee -a perf-tests.out +} -make clean -echo "-DNDEBUG" > perf-cppflags -make $MAKETARGET -make benchmark | sed -e 's/^/plain./g' | tee -a perf-tests.out +if [ x`uname -m` = xx86_64 ]; then + run_with_flags "-DNDEBUG -m32" "plain32" + run_with_flags "-DNDEBUG -fomit-frame-pointer -m32" "omitfp32" +fi -make clean -echo "-DNDEBUG -fomit-frame-pointer" > perf-cppflags -make $MAKETARGET -make benchmark | sed -e 's/^/omitfp./g' | tee -a perf-tests.out +run_with_flags "-DNDEBUG " "plain" +run_with_flags "-DNDEBUG -fomit-frame-pointer" "omitfp" -- cgit v1.2.3