Use FDO for benchmarks, which gives a 10-15% improvement.

pull/13171/head
Joshua Haberman 14 years ago
parent 20b2a6bd0d
commit 37e1c3102b
  1. 8
      Makefile
  2. 31
      perf-tests.sh

@ -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

@ -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"

Loading…
Cancel
Save