While refactoring a particular process in a ColdFusion project at work, I learned two things I thought worth passing on:
1. There are certain scenarios where doing queries in cfscript, instead of using the <cfquery> tag, does come with a significant performance penalty. In my case, the scenario was one where I was taking two recordsets created by querying the database and running subqueries against those recordsets in a recursive fashion. My guess is that instantiating the query object needed to perform query functions in cfscript (which I was doing with each recursion) was the main issue. When I converted the queries and functions involved in the recursive process to use tag-based syntax, the amount of time it took the process to run dropped by over 33%.
Not saying that this means you should avoid doing script-style queries, just that if there are a large number of such queries in a long-running process, you might want to experiment with refactoring them.
2. I already knew that I could have one or more cfscript blocks inside the body of a CFC function, but I didn't know that I could combine tag-syntax functions and script-syntax functions in the same CFC like so:
<cfcomponent accessors="true"> <cffunction name="doX" output="false" returntype="void"> ... </cffunction> <cfscript> public void function doY () { .... } </cfscript> </cfcomponent>
...it had never crossed my mind to try it that way. Certainly useful when you need to run a CFML function that has no cfscript equivalent in whatever version of CFML engine you're using (I should note that I was using ColdFusion 9.0.1 in both of the above cases).