2012年6月9日土曜日

Symfony の url_for() の書き方でどれが速いか

Symfony でurl_for()やlink_to()にはいくつかの書き方がありますが、どれが一番速いのかと思っていたら公式ページに記述がありました。 なお、バージョンはSymfony 1.4 です。

速い順に、

  • url_for('ルート名', パラメータの連想配列)
    例: url_for('article_by_id', array('id' => $article->getId()))
  • url_for('@ルート名+パラメータのクエリ文字列')
    例: url_for('@article_by_id?id='.$article->getId())
  • url_for('モジュール/アクション+パラメータのクエリ文字列')
    例: url_for('article/read?id='.$article->getId())
となっているようです。

まず、モジュール/アクションの形式よりもルート名指定のほうが速いのは、リンクにマッチするルーティングルールを見つけるためにすべてのルールを探す必要がないという理由です。
さらに、パラメータをクエリ文字列ではなく連想配列で指定すれば、余分なパースが不要となり高速化できます。


参考
http://www.symfony-project.org/gentle-introduction/1_4/ja/09-Links-and-the-Routing-System#chapter_09_sub_9c0012b84a321294dad618cb44debc4004bf29c0

0 件のコメント:

コメントを投稿