作成日: 2010年3月8日 | |
作成者:ハイミン・エンタープライズ(株) | 千葉 博胤 佐藤 弘一 |
最終更新日: 2010年3月8日 |
ColdFusionでの開発を行うにあたって、知らなくても目的のプログラムを書くことができますが、知っていることによって、パフォーマンスが向上したり、開発効率が向上したりするようなことがいくつかあります。今回はそういったものをいくつか紹介します。これらを知っているのと、知らないのでは小さなようで結構大きな差です。是非活用してみてください。
同じ処理を記述するのであれば、CFMLで記述するよりもCFSCRIPTで記述する方がパフォーマンスが優れています。
例えば、以下のような簡単なサンプルで実験してみるとわかりやすいです。
CFMLで記述した場合
処理時間:14.4秒(5回平均)
CFSCRITで記述した場合
処理時間:10.9秒(5回平均)
※処理時間は、筆者ローカルPCでの実測値です。
あまり効果の出ないケースもありますが、変数の設定などはとりわけ効果が大きいようです。
非常に大きな配列を使用する場合は、ArrayResize関数にて配列のサイズを指定すると、パフォーマンスの向上につながります。これを指定する目安は、要素数が500を超える場合です。それ以下の場合はあまり効果がないようです。
都道府県や元号などほとんど変わらないデータは、毎回データベースから取得することは非常に無駄です。そういったものは、Application変数に保持しておけば、ColsFusion Administratorで指定した期間、サーバーのメモリ空間から取得することが可能となり、パフォーマンス的に優れています。
あまり大きなデータを保持するとメモリを食うので注意しましょう。
リストは簡単で非常に使いやすいですが、あまり沢山のリストを使用する場合は、配列や構造体を使用する方がパフォーマンス的には優れています。
知っている人は知っていることですが、意外に知らない人が多い記述方法です。クエリ結果を以下のような記述法で取得することができます。
クエリ名.カラム名[レコード番号]
これによって、クエリ結果の指定した行を取得することができます。
ColdFusionコンポーネントは継承をサポートしています。
<cfcomponent>タグのextends属性にて継承するコンポーネントを指定します。また、Superキーワードにて継承しているコンポーネントのメソッドを参照することができます。
<cffunction>タグには、access属性というものがあります。これを指定することによって、メソッドへのアクセスレベルを指定することができます。
Private:当該CFC内もしくは、それを継承しているCFC内でのみ使用できます
package:当該CFC内もしくは、それを継承しているCFC、パッケージ内の他のコンポーネントから使用できます
Public:全てのColdFusionページから使用できます
Remote:ローカルまたは、リモートから使用することができます
適切なアクセス属性を指定して、セキュリティを向上させましょう。
変数の表記に関して、接頭辞を使うようにしましょう。
・コードの視認性が向上します
一目でどのような種類の変数かわかるので、コードを見た時に非常にわかりやすくなります。
・パフォーマンスが向上します
ColdFusionが変数を検索する場合、接頭辞がない場合は以下の順序で検索します。
1.関数ローカル (UDF および CFC の場合のみ)
2.スレッドローカル (スレッド内の場合のみ)
3.Arguments
4.Variables (ローカルスコープ)
5.Thread
6.CGI
7.Cffile
8.URL
9.Form
10.Cookie
11.Client
体感できるほど早くなるわけではありませんが、ちりも積もれば。。。ということで、接頭辞の指定はするようにしましょう。
条件分岐にて、多数の<CFIF><CFELSE>タグを使用するよりも、<CFSWITCH><CFCASE>タグを使用する方がパフォーマンスが優れています。
ColdFusionのマッピングを活用しましょう。
マッピングを活用することで様々なメリットがあります。例えば、ヘッダーなどの共通モジュールをインクルードするとき、以下のような記述を行います。
あるフォルダに対してcommonという論理パスを指定しておきます。そうすることによって、このヘッダーを埋め込む
タグの記述は、どの階層のプログラムに対しても同じ記述で済みます。
また、マッピングの設定を変更するだけでheader.cfmの場所をどこにでも移動できるので、将来的にフォルダ構成が変わっても心配いりません。
今回紹介したものは、ほとんどがマニュアルに載っている内容です。マニュアルを隅々まで読み込むのはなかなか大変ですが、知っていると便利な内容が結構あります。中堅やベテランのCF技術者の方も、一度読み直してみると新たな発見があるかもしれません。