タグ

2011年2月4日のブックマーク (1件)

  • PHPは何故値渡しより参照渡しの方が遅いのでしょうか。

    参照が速くない大きな理由の一つは、 $a =& $b; $c = $a; // ここで値のコピーが発生と思われる と同じことが、組み込み関数をコールするところで起こってしまうため、 参照の意味が無くなることが多いことだと思います。 提示していただいたベンチマークのコードだと、 is_array, implodeのところで$dataがコピーされていると思います。 関数をコールする都度これが起こると思われるので、 それが速度低下の大きな原因だと思います。 やはり「参照渡しそのものが遅い」わけではないと思います。 ただ、上の理由から、余程注意しないと、「参照渡しを使うと全体として遅くなる」 という結果を招くことは確かだと思います。 また、場合によってはガベコレの影響も大きいようなので、 ベンチマークの時は注意する必要があると思います。 (下のサンプルのガベコレのところを変えるだけで随分違います)

    PHPは何故値渡しより参照渡しの方が遅いのでしょうか。
    hardboiled243
    hardboiled243 2011/02/04
    参照渡しが早くない理由