3

cfinclude多くの関数の .cfm を CFC に変換すると、どれだけコストがかかるか知っている人はいますか?

<cfcomponent>
  <cfinclude template="functions.cfm">

Thisそれとも、関数をオブジェクトのスコープに直接アタッチすると速くなりますか? (func1、func2 はシングルトン Factory オブジェクトの関数になります)。

<cffunction name="createX">
  <cfset x = new X()>
  <cfset x.func1 = func1>
  <cfset x.func2 = func2>

パフォーマンスとメモリ使用量の点でどちらがより効率的ですか?

実際、cfinclude はどれほど効率的でしょうか? コードはすべてのインクルードでコンパイルされますか?

4

2 に答える 2

8

StackOverflow に適した短い応答:

実行されるのは CFML ではないことを覚えておく必要があります。そのため、パフォーマンスを考慮すると、ColdFusion が実際に実行するもの、つまりコンパイルされたクラス ファイルを確認することがより重要になります。また、CFC をコンパイルすると、CF は CFC 自体に 1 つのクラスを作成し、CFC のメソッドごとに 1 つのクラスを作成します。これは、メソッドがインラインであっても個別に含まれていても同じです。クラスの内容は少し異なりますが、パフォーマンスに関する限り意味のある方法ではありません。

ただし、メソッドをCFCに入れるだけであるIMOを支持する考慮事項がさらにあります。

より長い回答: 私はより大きな分析 (あなたの質問のトピックから外れているため、ここに完全に適しているわけではありません) をブログのこちらに投稿しました...

于 2012-07-20T08:05:22.147 に答える
1

関数.cfmの内容をfunctions.cfcに配置し、それをアプリケーションスコープで使用できます。

次に、CFCで電話をかけることができます#application.functions.someMethod()#

または、CFCが新しいfunctions.cfcを「拡張」し、次のようなスーパーウェイを使用してそのメソッドを使用することもできます。#super.someMethod()#

パフォーマンスに関する多くの情報を提供することはできませんが、可能な限りキャッシュすることが常に最善です。また、コンポーネントにを含めることは強くお勧めし<cfinclude template="functions.cfm">ます...たとえそれが機能しているように見えても、それは悪い習慣であり、さらなる問題を引き起こす可能性があります。

于 2012-07-20T12:43:33.757 に答える