Merge branch 'ak/profile-feedback-build'
* ak/profile-feedback-build: Fix profile feedback with -jN and add profile-fast Run the perf test suite for profile feedback too Don't define away __attribute__ on gcc Use BASIC_FLAGS for profile feedback
This commit is contained in:
14
INSTALL
14
INSTALL
@ -28,7 +28,7 @@ set up install paths (via config.mak.autogen), so you can write instead
|
|||||||
If you're willing to trade off (much) longer build time for a later
|
If you're willing to trade off (much) longer build time for a later
|
||||||
faster git you can also do a profile feedback build with
|
faster git you can also do a profile feedback build with
|
||||||
|
|
||||||
$ make prefix=/usr PROFILE=BUILD all
|
$ make prefix=/usr profile
|
||||||
# make prefix=/usr PROFILE=BUILD install
|
# make prefix=/usr PROFILE=BUILD install
|
||||||
|
|
||||||
This will run the complete test suite as training workload and then
|
This will run the complete test suite as training workload and then
|
||||||
@ -36,10 +36,20 @@ rebuild git with the generated profile feedback. This results in a git
|
|||||||
which is a few percent faster on CPU intensive workloads. This
|
which is a few percent faster on CPU intensive workloads. This
|
||||||
may be a good tradeoff for distribution packagers.
|
may be a good tradeoff for distribution packagers.
|
||||||
|
|
||||||
|
Alternatively you can run profile feedback only with the git benchmark
|
||||||
|
suite. This runs significantly faster than the full test suite, but
|
||||||
|
has less coverage:
|
||||||
|
|
||||||
|
$ make prefix=/usr profile-fast
|
||||||
|
# make prefix=/usr PROFILE=BUILD install
|
||||||
|
|
||||||
Or if you just want to install a profile-optimized version of git into
|
Or if you just want to install a profile-optimized version of git into
|
||||||
your home directory, you could run:
|
your home directory, you could run:
|
||||||
|
|
||||||
$ make PROFILE=BUILD install
|
$ make profile-install
|
||||||
|
|
||||||
|
or
|
||||||
|
$ make profile-fast-install
|
||||||
|
|
||||||
As a caveat: a profile-optimized build takes a *lot* longer since the
|
As a caveat: a profile-optimized build takes a *lot* longer since the
|
||||||
git tree must be built twice, and in order for the profiling
|
git tree must be built twice, and in order for the profiling
|
||||||
|
26
Makefile
26
Makefile
@ -1555,13 +1555,13 @@ endif
|
|||||||
PROFILE_DIR := $(CURDIR)
|
PROFILE_DIR := $(CURDIR)
|
||||||
|
|
||||||
ifeq ("$(PROFILE)","GEN")
|
ifeq ("$(PROFILE)","GEN")
|
||||||
CFLAGS += -fprofile-generate=$(PROFILE_DIR) -DNO_NORETURN=1
|
BASIC_CFLAGS += -fprofile-generate=$(PROFILE_DIR) -DNO_NORETURN=1
|
||||||
EXTLIBS += -lgcov
|
EXTLIBS += -lgcov
|
||||||
export CCACHE_DISABLE = t
|
export CCACHE_DISABLE = t
|
||||||
V = 1
|
V = 1
|
||||||
else
|
else
|
||||||
ifneq ("$(PROFILE)","")
|
ifneq ("$(PROFILE)","")
|
||||||
CFLAGS += -fprofile-use=$(PROFILE_DIR) -fprofile-correction -DNO_NORETURN=1
|
BASIC_CFLAGS += -fprofile-use=$(PROFILE_DIR) -fprofile-correction -DNO_NORETURN=1
|
||||||
export CCACHE_DISABLE = t
|
export CCACHE_DISABLE = t
|
||||||
V = 1
|
V = 1
|
||||||
endif
|
endif
|
||||||
@ -1646,12 +1646,20 @@ SHELL = $(SHELL_PATH)
|
|||||||
all:: shell_compatibility_test
|
all:: shell_compatibility_test
|
||||||
|
|
||||||
ifeq "$(PROFILE)" "BUILD"
|
ifeq "$(PROFILE)" "BUILD"
|
||||||
ifeq ($(filter all,$(MAKECMDGOALS)),all)
|
all:: profile
|
||||||
all:: profile-clean
|
endif
|
||||||
|
|
||||||
|
profile:: profile-clean
|
||||||
$(MAKE) PROFILE=GEN all
|
$(MAKE) PROFILE=GEN all
|
||||||
$(MAKE) PROFILE=GEN -j1 test
|
$(MAKE) PROFILE=GEN -j1 test
|
||||||
endif
|
$(MAKE) PROFILE=GEN -j1 perf
|
||||||
endif
|
$(MAKE) PROFILE=USE all
|
||||||
|
|
||||||
|
profile-fast: profile-clean
|
||||||
|
$(MAKE) PROFILE=GEN all
|
||||||
|
$(MAKE) PROFILE=GEN -j1 perf
|
||||||
|
$(MAKE) PROFILE=USE all
|
||||||
|
|
||||||
|
|
||||||
all:: $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) $(OTHER_PROGRAMS) GIT-BUILD-OPTIONS
|
all:: $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) $(OTHER_PROGRAMS) GIT-BUILD-OPTIONS
|
||||||
ifneq (,$X)
|
ifneq (,$X)
|
||||||
@ -2338,6 +2346,12 @@ mergetools_instdir_SQ = $(subst ','\'',$(mergetools_instdir))
|
|||||||
|
|
||||||
install_bindir_programs := $(patsubst %,%$X,$(BINDIR_PROGRAMS_NEED_X)) $(BINDIR_PROGRAMS_NO_X)
|
install_bindir_programs := $(patsubst %,%$X,$(BINDIR_PROGRAMS_NEED_X)) $(BINDIR_PROGRAMS_NO_X)
|
||||||
|
|
||||||
|
profile-install: profile
|
||||||
|
$(MAKE) install
|
||||||
|
|
||||||
|
profile-fast-install: profile-fast
|
||||||
|
$(MAKE) install
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'
|
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'
|
||||||
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
|
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
|
||||||
|
@ -291,10 +291,12 @@ extern char *gitbasename(char *);
|
|||||||
#else
|
#else
|
||||||
#define NORETURN
|
#define NORETURN
|
||||||
#define NORETURN_PTR
|
#define NORETURN_PTR
|
||||||
|
#ifndef __GNUC__
|
||||||
#ifndef __attribute__
|
#ifndef __attribute__
|
||||||
#define __attribute__(x)
|
#define __attribute__(x)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/* The sentinel attribute is valid from gcc version 4.0 */
|
/* The sentinel attribute is valid from gcc version 4.0 */
|
||||||
#if defined(__GNUC__) && (__GNUC__ >= 4)
|
#if defined(__GNUC__) && (__GNUC__ >= 4)
|
||||||
|
Reference in New Issue
Block a user