Performance of foreach, array_map with lambda and array_map with static function

Its interesting to run this benchmark with xdebug disabled, as xdebug adds quite a lot of overhead, esp to function calls. This is FGM’s script run using 5.6 With xdebug ForEach : 0.79232501983643 MapClosure: 4.1082420349121 MapNamed : 1.7884571552277 Without xdebug ForEach : 0.69830799102783 MapClosure: 0.78584599494934 MapNamed : 0.85125398635864 Here there is only a very small … Read more

Subqueries vs joins

A “correlated subquery” (i.e., one in which the where condition depends on values obtained from the rows of the containing query) will execute once for each row. A non-correlated subquery (one in which the where condition is independent of the containing query) will execute once at the beginning. The SQL engine makes this distinction automatically. … Read more

Why is processing an unsorted array the same speed as processing a sorted array with modern x86-64 clang?

Several of the answers in the question you link talk about rewriting the code to be branchless and thus avoiding any branch prediction issues. That’s what your updated compiler is doing. Specifically, clang++ 10 with -O3 vectorizes the inner loop. See the code on godbolt, lines 36-67 of the assembly. The code is a little … Read more