I bookmarked an article in which the author did some benchmarks about that ; unfortunatly, it’s in french… but here it is (maybe you’ll understand some parts of it) : Ne faites pas d’erreur
And here are the numbers, to help people who don’t read french :
- 10k notices, with
error_reportinganddisplay_errorsenabled : 5,162.76 ms - same, but with
display_errorsdisabled : 136.18 ms - same, but with
error_reportingdisabled too : 117.79 ms - and, finally, after patching the code so it doesn’t produce any notice anymore : 19.51 ms
Which means that, yes, PHP code runs faster without notices/warnings/errors, even when those are not displayed nor reported.
Derick Rethans says the same thing in this article : Five reasons why the shut-op operator (@) should be avoided (quoting) :
Reason 3: It’s slow (part 2)
Whenever PHP generates an error
message internally, it’s processed and
formatted all the way up to the fully
formatted message that can be
outputted straight to the browser.
Only just before it is displayed the
error_reportingsetting is checked.
This however, is not related to the
@-operator exclusively.
The error
message is just always fully formatted
beforeerror_reportingis checked—or
display_errorsfor that matter.