mirror of
https://github.com/esphome/esphome.git
synced 2026-05-29 06:27:24 +08:00
[benchmark] Use -Os to match firmware optimization level
CodSpeed benchmarks were building with -O2, while all firmware targets (ESP8266, ESP32, LibreTiny) use -Os. This mismatch means the benchmarks cannot detect inlining regressions that affect real devices — GCC under -O2 inlines functions that -Os outlines due to its size-conscious cost model. Switch to -Os with -ffunction-sections/-fdata-sections for proper dead-code stripping (needed because -Os preserves references that -O2 optimizes away at compile time).
This commit is contained in:
@@ -27,7 +27,10 @@ STUBS_DIR: Path = Path(root_path) / "tests" / "benchmarks" / "stubs"
|
|||||||
|
|
||||||
PLATFORMIO_OPTIONS = {
|
PLATFORMIO_OPTIONS = {
|
||||||
"build_flags": [
|
"build_flags": [
|
||||||
|
"-Os", # match firmware optimization level (detects inlining regressions)
|
||||||
"-g", # debug symbols for profiling
|
"-g", # debug symbols for profiling
|
||||||
|
"-ffunction-sections", # required for dead-code stripping with -Os
|
||||||
|
"-fdata-sections", # required for dead-code stripping with -Os
|
||||||
"-DUSE_BENCHMARK", # disable WarnIfComponentBlockingGuard in finish()
|
"-DUSE_BENCHMARK", # disable WarnIfComponentBlockingGuard in finish()
|
||||||
f"-I{STUBS_DIR}", # stub headers for ESP32-only components
|
f"-I{STUBS_DIR}", # stub headers for ESP32-only components
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user