将一个.cfm函数包含在CFC中,价格昂贵吗?

时间:2012-07-20 04:09:06

标签: coldfusion cfc

任何人都知道将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效率如何?代码是否会在每个包含上编译?

2 个答案:

答案 0 :(得分:8)

适合StackOverflow的简短回复:

你需要记住它不是被执行的CFML,所以对于性能考虑,更重要的是要看ColdFusion实际执行的是什么,即编译的类文件。在编译CFC时,CF为CFC本身创建一个类,在CFC中为每个方法创建一个类。无论方法是内联还是单独包含,这都是相同的。类的内容略有不同,但就性能而言,并不是一种有意义的方式。

还有一些需要考虑的因素 - IMO - 只是将这些方法放入CFC。

更长的回答: 我已经在我的博客上发布了一个更大的分析(因为你的问题偏离主题,所以不完全适合这里)here ...

答案 1 :(得分:1)

您可以将functions.cfm内容放入functions.cfc中,然后在Application范围内使用它。

然后在您的CFC中,您可以拨打#application.functions.someMethod()#

或者,也许你的CFC可以“扩展”新的functions.cfc并使用超级方式使用它的方法,例如:#super.someMethod()#

我不能给你很多关于性能的信息,但是尽可能地缓存总是最好的。我还强烈建议不要在您的组件中加入<cfinclude template="functions.cfm"> ......即使它似乎有效,但这是不好的做法,可能会带来更多问题。