Раньше это было до - я думаю - CFMX7, что большинство конструкций CFScript были быстрее, чем их эквиваленты на основе тегов. И иногда была значительная разница. С тех пор, правда, в этом действительно ничего не было, и действительно CFScript-код иногда может быть медленнее, чем ближайший эквивалент в тегах. Например:
for (i=1; i <= myObj.methodReturningTotal(); i++){
// stuff here
}
против:
<cfloop index="i" from="1" to="#myObj.methodReturningTotal()#">
<!--- stuff here --->
</cfloop>
Они выглядят внешне одинаково, но на основе тегов один будет выполнять MRE быстро, потому что выражение myObj.methodReturningTotal()
вычисляется на каждой итерации для цикла for
, но только один раз до того, как цикл начинается с версии <cfloop>
.
Аналогично цикл по спискам и запросов с использованием <cfloop>
немного быстрее, чем при использовании комбинации for
/listLen()
/listGetAt()
для списков и подобных махинаций для запросов.
Действительно ... использование различных конструкций кода не будет отличным местом для повышения производительности. Лучшее место для просмотра - посмотреть на свою логику, чтобы узнать, можно ли ее улучшить, и - с большей вероятностью увидеть выигрыш - посмотрите, как работает ваше взаимодействие с БД. Улучшение вашего SQL, проверка правильности ваших индексов и т. Д., Даст вам больше преимуществ, потому что взаимодействие с БД часто является самой большой шейкой бутылки производительности.
Хорошо, что вы скептически относитесь к вопросу о том, что сказали ваши коллеги-разработчики CF, без каких-либо фактических доказательств. Это хороший способ приблизиться к этим вещам и жизни в целом.
Я много исследовал эту тему, и, по словам большинства экспортеров coldfusion, нет существенной разницы в производительности между cfscript и cftags. Метод cfscript следует кодированию типа javascript, которое легко понять и лучше поддерживать. Также cfscript немного уменьшит размер кода. – Vineesh