[php-src] Issue #24183: Benchmark CI builds Symfony Demo without ext-intl, so 18% of the request is a polyfill

From: Date: Wed, 07 Oct 2026 21:19:47 +0000
Subject: [php-src] Issue #24183: Benchmark CI builds Symfony Demo without ext-intl, so 18% of the request is a polyfill
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-252937@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/24183 Author: ArtUkrainskiy ### Description The BENCHMARKING job in test-suite.yml configures without --enable-intl (no libicu-dev in its apt list either), unlike the test jobs. Symfony Demo then runs symfony/polyfill-intl-* for date formatting, ICU messages and symfony/string; the grapheme polyfill does preg_match_all('/\X/u', …) once per grapheme, 17.8K matches per request. Callgrind on the job's exact extension set (reproduces the CI counts within 0.5%) vs the same build with ext-intl: | Symfony Demo | instructions per request | PCRE share | |---|---|---| | as in CI | 39,427,533 | 19.5% | | with ext-intl | 31,533,221 (−20%) | 1.6% | preg_match_all() alone is 18% of the official number. A Symfony deployment doesn't run that path — the polyfill is the fallback — so a fifth of the benchmark moves with PCRE's global-match loop and \X and says nothing about the engine. bench.php and WordPress are unaffected. I'd add libicu-dev and --enable-intl to the job. The cost is a −20% step in the Symfony history at the switch, worth a note in the results. I can send the workflow change if that's acceptable.

« previous php.bugs (#252937) next »