最近、Doctrine 2ORMをCodeIgniter2に統合しました。Doctrine2をライブラリとして構成し、CodeIgniterに自動ロードしました。ページ内で、次の方法でDoctrineエンティティマネージャーをインスタンス化します。
private static $em = null;
public function __construct() {
parent::__construct();
$this->em = $this->doctrine->em;
}
そして、必要に応じてエンティティマネージャを使い始めます。私が抱えている問題は、各ページリクエストでエンティティマネージャが初期化するのに時間がかかることです(約1秒)。これにより、ユーザーはページが読み込まれるまで待機します。以下に、私が測定したいくつかのパフォーマンス結果を示します。
BENCHMARKS
Loading Time: Base Classes 0.0166
Doctrine 0.0486
GetArticle 1.0441
Functions 0.0068
Controller Execution Time 1.1770
Total Execution Time 1.1938
GetArticle関数は、基本的にEntityManager-> find()呼び出しを行います。
$currentart = $this->em->find('Entities\Article', $artid);
EntityManager-> createQuery()メソッドを使用しても、その1秒待つ必要があります。
すべてのページで、EntityManagerの最初の要求により、約1秒の時間損失があります。
これは一般的ですか?
この1秒は、EntityManagerがDBへの接続を確立する必要があるという事実から来ていますか?ただし、最初のリクエスト後の関数/リクエストは非常に高速です。