[wp-trac] [WordPress Trac] #48082: Replace `dirname(__FILE__)` with `__DIR__` (Performance improvement, massive patch)

WordPress Trac noreply at wordpress.org
Wed May 4 19:35:15 UTC 2022


#48082: Replace `dirname(__FILE__)` with `__DIR__` (Performance improvement,
massive patch)
------------------------------+--------------------------------------------
 Reporter:  ayeshrajans       |       Owner:  SergeyBiryukov
     Type:  enhancement       |      Status:  closed
 Priority:  normal            |   Milestone:  5.4
Component:  General           |     Version:
 Severity:  minor             |  Resolution:  fixed
 Keywords:  has-patch needs-  |     Focuses:  performance, coding-standards
  testing                     |
------------------------------+--------------------------------------------

Comment (by SergeyBiryukov):

 Replying to [comment:19 azaozz]:
 > Did a quick test to see how much faster `include 'file.php';` is
 compared to `include( 'file.php' );` as that was the reason to reduce code
 readability. Running this 10k times in a loop did not produce any
 measurable difference, seems the speed up is mostly theoretical.

 Thanks for the feedback! Just noting that `include( 'file.php' );`
 triggers two WPCS warnings:
 {{{
 | WARNING | [x] "include" is a statement not a function; no parentheses
 are required
 |         |     (PEAR.Files.IncludingFile.BracketsNotRequired)
 | WARNING | [x] File is being unconditionally included; use "require"
 instead
 |         |     (PEAR.Files.IncludingFile.UseRequire)
 }}}
 >
 > The other change that was "attached" later seems to have a bit of
 negative effect. Replacing `include` with `require once` seems to slow
 down PHP by about 0.5% on my test server. Frankly I'm not sure why this
 was done without any tests and why on this ticket.

 I think this part was suggested in comment:6 and supported in comment:7
 not necessarily for performance, but rather for consistency: `include`
 implies that the file is optional and execution can continue even if it's
 missing, while `require` implies a hard requirement, which was the case in
 pretty much all of the instances here.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/48082#comment:20>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list