Skip to content

Commit e75612a

Browse files
authored
Merge pull request #4 from AvdLee/community-results-and-cache-language
Add community results and ground COMPILATION_CACHING language in measured data
2 parents a9f9611 + f0f5386 commit e75612a

File tree

6 files changed

+8
-4
lines changed

6 files changed

+8
-4
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,9 @@ The `xcode-build-orchestrator` generates your table row at the end of every opti
221221
| App | Clean Build | Incremental Build |
222222
|-----|------------|-------------------|
223223
| [Stock Analyzer](https://www.stock-analyzer.app) | 41.5s → 33.2s (-8.3s / 20% faster) | 5.3s → 3.6s (-1.7s / 32% faster) |
224+
| [Enchanted](https://github.com/gluonfield/enchanted/pull/216) | 19.4s → 16.6s (-2.8s / 14% faster) | 2.5s → 2.2s (-0.3s / 12% faster) |
225+
| [Wikipedia iOS](https://github.com/wikimedia/wikipedia-ios/pull/5740) | 48.7s → 46.5s (-2.2s / 5% faster) | 12.9s → 12.2s (-0.7s / 5% faster) |
226+
| [Kickstarter iOS](https://github.com/kickstarter/ios-oss/pull/2808) | 83.4s → 83.5s (~0s / within noise) | 10.9s → 10.6s (-0.3s / 3% faster) |
224227

225228
## Contributing
226229

references/build-settings-best-practices.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ These settings optimize for production builds.
131131
- **Key:** `COMPILATION_CACHING`
132132
- **Recommended:** `YES`
133133
- **Why:** Caches compilation results for Swift and C-family sources so repeated compilations of the same inputs are served from cache. The biggest wins come from branch switching and clean builds where source files are recompiled unchanged. This is an opt-in feature. The umbrella setting controls both `SWIFT_ENABLE_COMPILE_CACHE` and `CLANG_ENABLE_COMPILE_CACHE` under the hood; those can be toggled independently if needed.
134-
- **Measurement:** The benchmark script auto-detects this setting and runs a **cached clean** phase that measures clean builds with a warm compilation cache. Standard clean builds may show overhead from cache population; the cached clean metric captures the realistic developer benefit.
134+
- **Measurement:** Measured 5-14% faster clean builds across tested projects (87 to 1,991 Swift files). The benefit compounds in real developer workflows where the cache persists between builds -- branch switching, pulling changes, and CI with persistent DerivedData -- though the exact savings depend on how many files change between builds.
135135
- **Risk:** Low -- can also be enabled via per-user project settings so it does not need to be committed to the shared project file.
136136

137137
### Integrated Swift Driver

scripts/generate_optimization_report.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def _parse_target_configs(pbxproj: str) -> Dict[str, Dict[str, Dict[str, str]]]:
9999
]
100100

101101
_GENERAL_EXPECTATIONS: List[Tuple[str, str, str]] = [
102-
("COMPILATION_CACHING", "YES", "Caches compilation results so repeat builds of unchanged inputs are served from cache"),
102+
("COMPILATION_CACHING", "YES", "Caches compilation results so repeat builds of unchanged inputs are served from cache. Measured 5-14% faster clean builds across tested projects; benefit compounds during branch switching and pulling changes"),
103103
]
104104

105105
_RELEASE_EXPECTATIONS: List[Tuple[str, str, str]] = [

skills/xcode-build-fixer/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ If a fix produced no measurable wall-time improvement, note `No measurable wall-
122122

123123
For changes valuable for non-benchmark reasons (deterministic package resolution, branch-switch caching), label them: "No wait-time improvement expected from this change. The benefit is [deterministic builds / faster branch switching / reduced CI cost]."
124124

125-
Note: `COMPILATION_CACHING` improvements are captured by the **cached clean** benchmark phase, which the benchmark script runs automatically when it detects the setting. Cached clean builds measure clean build time with a warm compilation cache -- the realistic scenario for branch switching and pulling changes. Standard clean builds may show overhead from cache population; use the cached clean metric as the primary comparison for this setting.
125+
Note: `COMPILATION_CACHING` has been measured at 5-14% faster clean builds across tested projects (87 to 1,991 Swift files). The benefit compounds in real developer workflows where the cache persists between builds -- branch switching, pulling changes, and CI with persistent DerivedData. The benchmark script auto-detects this setting and runs a cached clean phase for validation.
126126

127127
## Escalation
128128

skills/xcode-build-orchestrator/SKILL.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ Every recommendation presented to the developer must include one of these impact
7070
- "Reduces parallel compile work but is unlikely to reduce your build wait time because other tasks take equally long."
7171
- "Impact on wait time is uncertain -- re-benchmark after applying to confirm."
7272
- "No wait-time improvement expected. The benefit is [deterministic builds / faster branch switching / reduced CI cost]."
73+
- For COMPILATION_CACHING specifically: "Measured 5-14% faster clean builds across tested projects. The benefit compounds in real workflows where the cache persists between builds -- branch switching, pulling changes, and CI with persistent DerivedData."
7374

7475
Never quote cumulative task-time savings as the headline impact. If a change reduces 5 seconds of parallel compile work but another equally long task still runs, the developer's wait time does not change.
7576

skills/xcode-build-orchestrator/references/orchestration-report-template.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,6 @@ Open a PR: https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill/edit/m
119119
- If results are noisy, say that the verification is inconclusive instead of overstating success.
120120
- The Build Settings Audit scope is strictly build performance. Do not flag language-migration settings like `SWIFT_STRICT_CONCURRENCY` or `SWIFT_UPCOMING_FEATURE_*`.
121121
- The Compilation Diagnostics section is populated by `diagnose_compilation.py`. If not run, note that it was skipped.
122-
- `COMPILATION_CACHING` improvements are captured by the **cached clean** benchmark phase, which measures clean builds with a warm compilation cache. Standard clean builds may show overhead from cache population; this is expected. Use the cached clean metric as the primary comparison when evaluating this setting.
122+
- `COMPILATION_CACHING` has been measured at 5-14% faster clean builds across tested projects. The benefit compounds in real developer workflows (branch switching, pulling changes, CI with persistent DerivedData). The benchmark script auto-detects this setting and runs a cached clean phase for validation.
123123
- When recommending SPM version pins, verify that tagged versions exist (`git ls-remote --tags`) before suggesting a pin-to-tag change. If no tags exist, recommend pinning to a commit revision hash.
124124
- Before including a local package in a build-time recommendation, verify it is referenced in `project.pbxproj` via `XCLocalSwiftPackageReference`. Packages that exist on disk but are not linked do not affect build time.

0 commit comments

Comments
 (0)