]> granicus.if.org Git - php/commitdiff
Add targets to simplify building PHP with FDO (Feedback Directed Optimisation)
authorDmitry Stogov <dmitry@zend.com>
Tue, 26 May 2015 14:33:25 +0000 (17:33 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 26 May 2015 14:33:25 +0000 (17:33 +0300)
PHP should be built with the folowing steps:

make clean
make -j4 prof-gen
; now php should be trained with some scripts
; for example `sapi/cgi/php -T 1000 /var/www/http/wordpress/index.php > /dev/null`
make prof-clean
make -j4 prof-use

The "properly" trained build may give up to 10% real performance boost!
"Improprly" trained PHP might be even slower.

Makefile.global
configure.in

index f833efa5e70e4a4b0b3ae7a35afa2fea36fabf64..c571f3455df8a45c8c5a1dc4e1791100e25fd80b 100644 (file)
@@ -130,5 +130,18 @@ distclean: clean
        fi
        $(EGREP) define'.*include/php' $(top_srcdir)/configure | $(SED) 's/.*>//'|xargs rm -f
 
-.PHONY: all clean install distclean test
+prof-gen:
+       CCACHE_DISABLE=1 $(MAKE) PROF_FLAGS=-fprofile-generate all
+
+prof-clean:
+       find . -name \*.lo -o -name \*.o | xargs rm -f
+       find . -name \*.la -o -name \*.a | xargs rm -f 
+       find . -name \*.so | xargs rm -f
+       rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_MILTER_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
+
+prof-use:
+       CCACHE_DISABLE=1 $(MAKE) PROF_FLAGS=-fprofile-use all
+
+
+.PHONY: all clean install distclean test prof-gen prof-clean prof-use
 .NOEXPORT:
index ffc714ff5ff7a7e02d5f19567b44b76feac8c6d5..9aefa2b9645c008220e8d2f65f0934e7ed155904 100644 (file)
@@ -1435,10 +1435,10 @@ CC=$old_CC
 PHP_CONFIGURE_PART(Generating files)
 
 CXXFLAGS_CLEAN=$CXXFLAGS
-CFLAGS_CLEAN=$CFLAGS
+CFLAGS_CLEAN="$CFLAGS \$(PROF_FLAGS)"
 CFLAGS="\$(CFLAGS_CLEAN) $standard_libtool_flag"
 INLINE_CFLAGS="$INLINE_CFLAGS $standard_libtool_flag"
-CXXFLAGS="$CXXFLAGS $standard_libtool_flag"
+CXXFLAGS="$CXXFLAGS $standard_libtool_flag \$(PROF_FLAGS)"
 
 if test "$PHP_PHAR" != "no" && test "$PHP_CLI" != "no"; then
   pharcmd=pharcmd