2017-03-10 8 views
0

私はSymfony2でオブジェクトを変更する関数を持っています。この関数は、2つの方法のいずれかでオブジェクトを受け取ることができます。まず、オブジェクトがこのような機能に渡すことができる。Symfony2:関数内のオブジェクトの検索対関数へのオブジェクトの受け渡し

public function myFunction(Object $myObject) 
    { 
     // Do something with $myObject 
    } 

あるいは、オブジェクトID(またはその他の属性)のように、関数に渡され、関数内のオブジェクトを検索するために使用することができます。機能的には、これらの2つの方法は機能的に同等である。私の質問は、これらの2つの方法がアプリケーションのパフォーマンスに与える影響がどのように違うのでしょうか?私は最適化されたパフォーマンスのためにデータベースクエリの数を最小限に抑える必要があることを知っています。したがって、追加のfind() クエリのパフォーマンスコストは、オブジェクトを関数に渡すパフォーマンスコストとどのように比較されますか?

答えて

1

オブジェクトを関数に渡すと、より効果的になります。 PHP5以降のオブジェクトare passed by object identifier, very similar in concept to pass by reference

つまり、データベースから生データの単一のレコードを取得するのは比較的高速です。私の経験では、水和(データベースから取得したリレーショナルデータをマップされたビジネスオブジェクトに変換する)は、ボトルネックを見つける場所です。 Doctrineのリード開発者であるMarco Pivettaはexcellent post about thisと書いています。

一般的に言えば、通常の状況下では、オブジェクトを渡して単一のオブジェクトを水和することの間に、パフォーマンスに違いはないことに気づくでしょう。しかし、ループでの水分補給は、あなたが問題に遭遇するところです。オブジェクトが複雑になり、水和するデータが増えるほどパフォーマンスは悪化します。

関連する問題