3

任何人都知道将cfinclude许多功能的 .cfm 放入 CFC 会有多昂贵?

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

或者如果我将函数直接附加到对象的This范围内会更快吗?(func1、func2 将是单例工厂对象的函数)。

<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 本身创建一个类,并为 CFC 中的每个方法创建一个类。无论方法是内联的还是单独包含的,这都是相同的。类的内容略有不同,但就性能而言,意义不大。

不过,还有其他考虑因素,这有利于 - IMO - 只是将这些方法放入 CFC。

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

于 2012-07-20T08:05:22.147 回答
1

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

然后在你的 CFC 中你可以打电话#application.functions.someMethod()#

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

我不能给你太多关于性能的信息,但尽可能缓存总是最好的。我还强烈建议不要将 a<cfinclude template="functions.cfm">添加到您的组件中……即使它看起来有效,这也是一种不好的做法,并且可能会带来更多问题。

于 2012-07-20T12:43:33.757 回答