Page MenuHomePhabricator

StreamConfig::validate() eating 0.5% of index.php time
Closed, ResolvedPublicBUG REPORT

Description

StreamConfig::validate() is consuming about 0.5% of index.php wall-clock time, which seems excessive for what it does:

https://performance.wikimedia.org/arclamp/svgs/daily/2025-12-20.excimer-wall.index.reversed.svgz?s=EventStreamConfig&x=145.0&y=981

At a glance, I would guess the main contributors are the eager evaluation of var_export() and the regex validation.

We could optimize this by only running var_export() when $settings[self::STREAM_SETTING] is actually unset.

I question the value of this up-front validation entirely, though. Might it not be better to simply let it fail later if the config is bad instead of incurring this cost on every request? In other words, what would be the harm of deleting StreamConfig::validate entirely?

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

Change #1220048 had a related patch set uploaded (by Ori; author: Ori):

[mediawiki/extensions/EventStreamConfig@master] Improve performance of StreamConfig validation

https://gerrit.wikimedia.org/r/1220048

Indeed! There is no reason to do this on every request. It would be better to do this with tests/CI.

T405516: Schema validation for EventStreamConfig

Change #1220048 merged by jenkins-bot:

[mediawiki/extensions/EventStreamConfig@master] Improve performance of StreamConfig validation

https://gerrit.wikimedia.org/r/1220048

Change #1224131 had a related patch set uploaded (by Reedy; author: Ori):

[mediawiki/extensions/EventStreamConfig@REL1_45] Improve performance of StreamConfig validation

https://gerrit.wikimedia.org/r/1224131

Change #1224132 had a related patch set uploaded (by Reedy; author: Ori):

[mediawiki/extensions/EventStreamConfig@REL1_44] Improve performance of StreamConfig validation

https://gerrit.wikimedia.org/r/1224132

Change #1224133 had a related patch set uploaded (by Reedy; author: Ori):

[mediawiki/extensions/EventStreamConfig@REL1_43] Improve performance of StreamConfig validation

https://gerrit.wikimedia.org/r/1224133

Change #1224133 merged by jenkins-bot:

[mediawiki/extensions/EventStreamConfig@REL1_43] Improve performance of StreamConfig validation

https://gerrit.wikimedia.org/r/1224133

Change #1224132 merged by jenkins-bot:

[mediawiki/extensions/EventStreamConfig@REL1_44] Improve performance of StreamConfig validation

https://gerrit.wikimedia.org/r/1224132

Change #1224131 merged by jenkins-bot:

[mediawiki/extensions/EventStreamConfig@REL1_45] Improve performance of StreamConfig validation

https://gerrit.wikimedia.org/r/1224131

ori claimed this task.

Before 7b995627f2 : 0.5%
After: 0%

So, the avoiding the eager evaluation of var_export() did the trick. 🎉