参照が速くない大きな理由の一つは、 $a =& $b; $c = $a; // ここで値のコピーが発生と思われる と同じことが、組み込み関数をコールするところで起こってしまうため、 参照の意味が無くなることが多いことだと思います。 提示していただいたベンチマークのコードだと、 is_array, implodeのところで$dataがコピーされていると思います。 関数をコールする都度これが起こると思われるので、 それが速度低下の大きな原因だと思います。 やはり「参照渡しそのものが遅い」わけではないと思います。 ただ、上の理由から、余程注意しないと、「参照渡しを使うと全体として遅くなる」 という結果を招くことは確かだと思います。 また、場合によってはガベコレの影響も大きいようなので、 ベンチマークの時は注意する必要があると思います。 (下のサンプルのガベコレのところを変えるだけで随分違います)
![PHPは何故値渡しより参照渡しの方が遅いのでしょうか。](https://cdn-ak-scissors.b.st-hatena.com/image/square/a73abc454de4aaacb370bad26db2312eacbc7375/height=288;version=1;width=512/https%3A%2F%2Foshiete.xgoo.jp%2Fimages%2Fsp%2Fqa_recommend%2F2101_2.jpg)