3c52344300
-O3 does not measurably improve performance of the resulting binaries, neither with lto enabled nor with lto disabled. what it does to however is cause gcc warning spew in libstdc++ that we can't do anything about (and that upon inspection of libstdc++ source looks like a gcc bug). with lto, -O3: Benchmark 1: GC_INITIAL_HEAP_SIZE=10g nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system' Time (mean ± σ): 4.608 s ± 0.027 s [User: 3.866 s, System: 0.522 s] Range (min … max): 4.579 s … 4.640 s 10 runs Benchmark 2: nix eval -f <nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix> Time (mean ± σ): 408.1 ms ± 25.5 ms [User: 360.0 ms, System: 28.1 ms] Range (min … max): 387.6 ms … 439.0 ms 10 runs with lto, -O2: Benchmark 1: GC_INITIAL_HEAP_SIZE=10g nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system' Time (mean ± σ): 4.632 s ± 0.044 s [User: 3.874 s, System: 0.544 s] Range (min … max): 4.563 s … 4.673 s 10 runs Benchmark 2: nix eval -f <nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix> Time (mean ± σ): 394.0 ms ± 23.9 ms [User: 351.2 ms, System: 27.6 ms] Range (min … max): 377.8 ms … 429.3 ms 10 runs without lto, -O3: Benchmark 1: GC_INITIAL_HEAP_SIZE=10g nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system' Time (mean ± σ): 4.700 s ± 0.024 s [User: 3.906 s, System: 0.559 s] Range (min … max): 4.663 s … 4.717 s 10 runs Benchmark 2: nix eval -f <nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix> Time (mean ± σ): 400.4 ms ± 25.6 ms [User: 353.7 ms, System: 26.8 ms] Range (min … max): 379.8 ms … 430.6 ms 10 runs without lto, -O2: Benchmark 1: GC_INITIAL_HEAP_SIZE=10g nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system' Time (mean ± σ): 4.724 s ± 0.030 s [User: 3.924 s, System: 0.570 s] Range (min … max): 4.687 s … 4.749 s 10 runs Benchmark 2: nix eval -f <nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix> Time (mean ± σ): 392.4 ms ± 24.3 ms [User: 350.9 ms, System: 26.4 ms] Range (min … max): 376.9 ms … 428.0 ms 10 runs fixes #46 Change-Id: Ib8afad8a07c278f57f2e3317d00cce4f9ec0f338
72 lines
1.7 KiB
Makefile
72 lines
1.7 KiB
Makefile
include mk/build-dir.mk
|
|
|
|
-include $(buildprefix)Makefile.config
|
|
clean-files += $(buildprefix)Makefile.config
|
|
|
|
ifeq ($(ENABLE_BUILD), yes)
|
|
makefiles = \
|
|
mk/precompiled-headers.mk \
|
|
local.mk \
|
|
src/libutil/local.mk \
|
|
src/libstore/local.mk \
|
|
src/libfetchers/local.mk \
|
|
src/libmain/local.mk \
|
|
src/libexpr/local.mk \
|
|
src/libcmd/local.mk \
|
|
src/nix/local.mk \
|
|
src/resolve-system-dependencies/local.mk \
|
|
scripts/local.mk \
|
|
misc/bash/local.mk \
|
|
misc/fish/local.mk \
|
|
misc/zsh/local.mk \
|
|
misc/systemd/local.mk \
|
|
misc/launchd/local.mk \
|
|
misc/upstart/local.mk
|
|
endif
|
|
|
|
ifeq ($(ENABLE_BUILD)_$(ENABLE_TESTS), yes_yes)
|
|
UNIT_TEST_ENV = _NIX_TEST_UNIT_DATA=unit-test-data
|
|
makefiles += \
|
|
tests/unit/libutil/local.mk \
|
|
tests/unit/libutil-support/local.mk \
|
|
tests/unit/libstore/local.mk
|
|
endif
|
|
|
|
ifeq ($(ENABLE_TESTS), yes)
|
|
makefiles += \
|
|
tests/unit/libstore-support/local.mk \
|
|
tests/unit/libexpr/local.mk \
|
|
tests/unit/libexpr-support/local.mk \
|
|
tests/functional/local.mk \
|
|
tests/functional/ca/local.mk \
|
|
tests/functional/dyn-drv/local.mk \
|
|
tests/functional/test-libstoreconsumer/local.mk \
|
|
tests/functional/repl_characterization/local.mk \
|
|
tests/functional/plugins/local.mk
|
|
else
|
|
makefiles += \
|
|
mk/disable-tests.mk
|
|
endif
|
|
|
|
# Some makefiles require access to built programs and must be included late.
|
|
makefiles-late =
|
|
|
|
ifeq ($(ENABLE_BUILD), yes)
|
|
makefiles-late += doc/manual/local.mk
|
|
makefiles-late += doc/internal-api/local.mk
|
|
endif
|
|
|
|
# Miscellaneous global Flags
|
|
|
|
OPTIMIZE = 1
|
|
|
|
ifeq ($(OPTIMIZE), 1)
|
|
GLOBAL_CXXFLAGS += -O2 $(CXXLTO)
|
|
GLOBAL_LDFLAGS += $(CXXLTO)
|
|
else
|
|
GLOBAL_CXXFLAGS += -O0 -U_FORTIFY_SOURCE
|
|
endif
|
|
|
|
include mk/lib.mk
|
|
|
|
GLOBAL_CXXFLAGS += -g -Wall -Wimplicit-fallthrough -include $(buildprefix)config.h -std=c++2a -I src
|