Setup: Avoid using count() function in any kind of loop(s)
authorDerick Alangi <alangiderick@gmail.com>
Sat, 12 Jan 2019 19:39:51 +0000 (20:39 +0100)
committerThiemo Kreuz <thiemo.kreuz@wikimedia.de>
Tue, 15 Jan 2019 11:46:51 +0000 (12:46 +0100)
Using count() function in loops makes things very slow because
of function overheads and this function gets called everytime the
loop runs meaning the bigger the value of the variable in count(),
the slower the loop as its value always gets computed as the loop
runs.

In this case, the use of foreach(...){} is possible in order to
perform the computation making it pretty fast hence improving the
performance.

Change-Id: Ie21fbf8f6acf72373d1da75023725b4592c80386

includes/Setup.php

index aba050d..61fad2d 100644 (file)
@@ -367,10 +367,9 @@ if ( $wgRCFilterByAge ) {
        // Note that we allow 1 link higher than the max for things like 56 days but a 60 day link.
        sort( $wgRCLinkDays );
 
-       // phpcs:ignore Generic.CodeAnalysis.ForLoopWithTestFunctionCall
-       for ( $i = 0; $i < count( $wgRCLinkDays ); $i++ ) {
-               if ( $wgRCLinkDays[$i] >= $rcMaxAgeDays ) {
-                       $wgRCLinkDays = array_slice( $wgRCLinkDays, 0, $i + 1, false );
+       foreach ( $wgRCLinkDays as $i => $days ) {
+               if ( $days >= $rcMaxAgeDays ) {
+                       array_splice( $wgRCLinkDays, $i + 1 );
                        break;
                }
        }