任何人都知道将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效率如何?代码是否会在每个包含上编译?
答案 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">
......即使它似乎有效,但这是不好的做法,可能会带来更多问题。