From e0ae898106361bb44612f1fda493839f7b262108 Mon Sep 17 00:00:00 2001 From: adelon <22380201+adelon@users.noreply.github.com> Date: Thu, 11 Jun 2026 02:39:05 +0200 Subject: Use `-O1` for benchmark builds --- .gitignore | 6 +----- Makefile | 17 ++++++++++------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index b0a210bf5..b00557e86 100644 --- a/.gitignore +++ b/.gitignore @@ -82,8 +82,4 @@ result # Profiling profile/ -.stack-work-profile/ -.stack-work-profile-pre-pmcfg/ -.stack-work-pmcfg-test/ -.stack-work-pmcfg-test-pre/ -.stack-work-pmcfg-test-hooks/ +.stack-work-* diff --git a/Makefile b/Makefile index 140a1b4cd..8789b5a16 100644 --- a/Makefile +++ b/Makefile @@ -47,13 +47,16 @@ RGL_MEMORY_STEM ?= $(RGL_PROFILE_DIR)/rgl-memory RGL_MEMORY_RTS ?= -hc RGL_HEAP_SAMPLE_INTERVAL ?= 0.1 -BENCH_STACK_WORK ?= $(PROFILE_STACK_WORK) -BENCH_PROFILE_FLAGS ?= --profile -BENCH_GHC_OPTIONS ?= $(PROFILE_GHC_OPTIONS) +# Benchmark configuration. These targets should measure release-like code by +# default; use the profile-* targets for cost-centre/profiling builds. +BENCH_STACK_WORK ?= .stack-work-bench +BENCH_PROFILE_FLAGS ?= +BENCH_BUILD_FLAGS ?= $(BENCH_PROFILE_FLAGS) +BENCH_GHC_OPTIONS ?= -O1 BENCH_TARGET ?= gf:bench:gf-compiler-bench BENCH_TASTY_OPTIONS ?= BENCH_PRE_PMCFG_FLAG ?= --flag gf:pre-pmcfg -BENCH_PRE_PMCFG_STACK_WORK ?= .stack-work-profile-pre-pmcfg +BENCH_PRE_PMCFG_STACK_WORK ?= .stack-work-bench-pre-pmcfg RGL_BENCH_DIR ?= $(PROFILE_DIR)/rgl-bench RGL_BENCH_GFO_DIR ?= $(RGL_BENCH_DIR)/gfo @@ -119,19 +122,19 @@ profile-rgl-clean: rm -rf $(RGL_PROFILE_DIR) bench-build: - $(BENCH_STACK) build $(BENCH_TARGET) --bench --no-run-benchmarks $(BENCH_PROFILE_FLAGS) --ghc-options "$(BENCH_GHC_OPTIONS)" + $(BENCH_STACK) build $(BENCH_TARGET) --bench --no-run-benchmarks $(BENCH_BUILD_FLAGS) --ghc-options "$(BENCH_GHC_OPTIONS)" bench-rgl: bench-build @test -d "$(RGL_DIR)" || { echo "Missing RGL_DIR: $(RGL_DIR)"; exit 1; } rm -rf $(RGL_BENCH_GFO_DIR) $(RGL_BENCH_PGF_DIR) mkdir -p $(RGL_BENCH_GFO_DIR) $(RGL_BENCH_PGF_DIR) - GF_BENCH_RGL_DIR="$(RGL_DIR)" GF_BENCH_NAME="$(RGL_BENCH_NAME)" GF_BENCH_GFO_DIR="$(RGL_BENCH_GFO_DIR)" GF_BENCH_PGF_DIR="$(RGL_BENCH_PGF_DIR)" GF_BENCH_MODULES="$(RGL_BENCH_MODULES)" GF_BENCH_IMPORT_DIRS="$(RGL_BENCH_IMPORT_DIRS)" $(BENCH_STACK) bench $(BENCH_TARGET) $(BENCH_PROFILE_FLAGS) --ghc-options "$(BENCH_GHC_OPTIONS)" --benchmark-arguments "$(BENCH_TASTY_OPTIONS) $(BENCH_RTS_OPTIONS)"; \ + GF_BENCH_RGL_DIR="$(RGL_DIR)" GF_BENCH_NAME="$(RGL_BENCH_NAME)" GF_BENCH_GFO_DIR="$(RGL_BENCH_GFO_DIR)" GF_BENCH_PGF_DIR="$(RGL_BENCH_PGF_DIR)" GF_BENCH_MODULES="$(RGL_BENCH_MODULES)" GF_BENCH_IMPORT_DIRS="$(RGL_BENCH_IMPORT_DIRS)" $(BENCH_STACK) bench $(BENCH_TARGET) $(BENCH_BUILD_FLAGS) --ghc-options "$(BENCH_GHC_OPTIONS)" --benchmark-arguments "$(BENCH_TASTY_OPTIONS) $(BENCH_RTS_OPTIONS)"; \ status=$$?; \ if test -f gf-compiler-bench.prof; then mv gf-compiler-bench.prof "$(RGL_BENCH_DIR)/gf-compiler-bench.prof"; fi; \ exit $$status bench-rgl-pre-pmcfg: - $(MAKE) bench-rgl BENCH_STACK_WORK="$(BENCH_PRE_PMCFG_STACK_WORK)" RGL_BENCH_DIR="$(RGL_BENCH_PRE_PMCFG_DIR)" RGL_BENCH_NAME="$(RGL_BENCH_PRE_PMCFG_NAME)" BENCH_PROFILE_FLAGS="$(BENCH_PROFILE_FLAGS) $(BENCH_PRE_PMCFG_FLAG)" + $(MAKE) bench-rgl BENCH_STACK_WORK="$(BENCH_PRE_PMCFG_STACK_WORK)" RGL_BENCH_DIR="$(RGL_BENCH_PRE_PMCFG_DIR)" RGL_BENCH_NAME="$(RGL_BENCH_PRE_PMCFG_NAME)" BENCH_BUILD_FLAGS="$(BENCH_BUILD_FLAGS) $(BENCH_PRE_PMCFG_FLAG)" bench-rgl-clean: rm -rf $(RGL_BENCH_DIR) $(RGL_BENCH_PRE_PMCFG_DIR) -- cgit v1.2.3