Skip to content

Improves CI build performance - #22995

Draft
NickSdot wants to merge 4 commits into
php:masterfrom
NickSdot:perf/ci-build-times
Draft

Improves CI build performance#22995
NickSdot wants to merge 4 commits into
php:masterfrom
NickSdot:perf/ci-build-times

Conversation

@NickSdot

@NickSdot NickSdot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

WIP

Results

f47a44e

Faster Windows CI through parallel builds/tests and overlapping database setup

Windows x64 Before After Improvement
Setup + build 10:53 3:22 69%
Tests 30:37 14:48 52%
Full job 41:55 18:48 55%

Cache hit rate: ~95%.

8e526f1

Benchmark checkout avoids downloading unnecessary historical file contents

Step Before After Improvement
Benchmark checkout ~1:11 0:20 72%

d2b0d08

Keeps non-Windows compiler caches fresh

Before: the older the weekly cache, the lower the hit rate. 2026-07-27 was ~99% (0:30s) while 2026-08-02 was only ~25% (6:52). Rolling cache solves that. 1

Compile job Before 2 After Improvement
Linux release 7:54 0:28 94%
Benchmark 2:33 0:17 89%
Unit tests 2:06 0:14 89%
Linux ASAN 1:50 0:27 75%
macOS 4:07 1:30 64%
Alpine ASAN 2:37 0:57 64%
Linux x32 2:10 0:57 56%

Cache hit rate: ~99%.

9de2a2e

Skip unused setup in the ordinary Linux ASAN job

Setup Before After Improvement
Service containers 1:24 0:13 85%
MSSQL setup 0:14 Skipped 100%
Apt dependencies 0:54 0:42 22%
Total targeted setup 2:32 0:55 64%

Saves 1:37 per ASAN run. Depending on download speeds shaves off 1–3 min.

Footnotes

  1. each new master commit rolls the cache forward.

  2. when cache not fresh.

@NickSdot
NickSdot force-pushed the perf/ci-build-times branch 2 times, most recently from c4f48b7 to 6ce446c Compare August 2, 2026 09:16
@NickSdot
NickSdot force-pushed the perf/ci-build-times branch 2 times, most recently from 87c7e25 to 541ac21 Compare August 2, 2026 10:01
@NickSdot
NickSdot force-pushed the perf/ci-build-times branch 10 times, most recently from 4010558 to b9e37cf Compare August 2, 2026 17:09
@NickSdot
NickSdot force-pushed the perf/ci-build-times branch 3 times, most recently from 5f23b04 to 70b3bec Compare August 2, 2026 19:41
Comment thread .github/matrix.php Outdated
Comment on lines +11 to +12
// Temporary while profiling non-Windows CI builds. Remove after this work is complete.
const SKIP_WINDOWS_CI = true;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could just use the CI labels.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems to require explicit permissions. GUI doesn't allow and gh refuses.

@NickSdot
NickSdot force-pushed the perf/ci-build-times branch from 70b3bec to 9de2a2e Compare August 2, 2026 21:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants