タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

PHPとtipsに関するigrepのブックマーク (2)

  • [PHP] 高速化Tipsのオカルト(1) 関数への参照渡し

    他の言語同様、PHPにも多くの高速化Tipsがあります。汎用で効果的なもの、守銭奴的で質的に意義の乏しいものなど様々ですが、中には「全く無意味なこと」や「過去のバージョンの話」、「状況次第では逆効果になる」ようなものも散見されます。 先日は、にわかに高速化づいているGoogleも、をオープンさせました。その中には、も含まれています。ところが、これも「オカルト」に毒されたされ、公開から僅か1週間で何度も書き直されるような事態になっています。 ここでは巷間に溢れるPHP高速化Tipsの幾つか怪しいものを検証してみます。 ※なお、検証に使ったPHPのバージョンは5.2.9です。 大きな配列はポインタで渡す? PHPには厳密な意味でのポインタは無く、zvalのリファレンスということになりますが。 関数内で元の変数を参照するだけの場合でも、変数のコピーが行われないように参照渡しにする開発者を見かけ

    igrep
    igrep 2011/09/05
    "結論としては、関数内で値を直接変更しなければいけないような必要性が無ければ、PHPのcopy-on-writeに委ねたコーディングをするのが正解だと思います"
  • [PHP] 配列やオブジェクトの値渡しと参照渡し

    PHPでの関数への値渡し/参照渡しは、C言語などのそれと基的には同様ですが、若干の高級言語らしいトリックが含まれています。 少し前ですが、新たにジョインしたメンバーT君(PHPは初心者)が、レスポンスを気にして参照渡しを多用してくれていたので、ちょっと説明。 値渡しでも、ポインタが渡される T君は、関数に大きな配列を渡す際に参照渡しにしてくれていました。 メモリコピーのオーバーヘッドを無くすためです。 function get_value(array &$a){ return $a[0]; } $a = get_big_array(); $v = get_value($a); こういった意識・心がけは非常に良いことなのですが、実はPHPにおいて、このケースは値渡しでも参照渡しでも同じ挙動をします。 確認してみましょう。 function byVal(array $a){ echo mem

    igrep
    igrep 2011/09/05
    結構複雑だな・・・
  • 1