diff options
author | Joshua Haberman <joshua@reverberate.org> | 2011-02-27 14:48:25 -0800 |
---|---|---|
committer | Joshua Haberman <joshua@reverberate.org> | 2011-02-27 14:48:25 -0800 |
commit | 37e1c3102be15f1e57805e828993156e3492d764 (patch) | |
tree | 3a323de7e43703c717b7d0dff251f483de459cd6 | |
parent | 20b2a6bd0d94b987bda9e32f4da1cb00a4bcd00f (diff) |
Use FDO for benchmarks, which gives a 10-15% improvement.
-rw-r--r-- | Makefile | 8 | ||||
-rwxr-xr-x | perf-tests.sh | 31 |
2 files changed, 22 insertions, 17 deletions
@@ -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" |