2013-07-03 2 views
4

Сегодня, когда я пытался повысить производительность своего приложения, в соответствии с предложением некоторых разработчиков ColdFusion, я модифицировал код кода на основе кода на основе cfscript.Выполняется ли код, написанный внутри cfscript быстрее, чем эквивалентный код на основе тегов?

Но я не видел повышения производительности. На самом деле это выглядит немного медленнее.

+0

Я много исследовал эту тему, и, по словам большинства экспортеров coldfusion, нет существенной разницы в производительности между cfscript и cftags. Метод cfscript следует кодированию типа javascript, которое легко понять и лучше поддерживать. Также cfscript немного уменьшит размер кода. – Vineesh

ответ

8

Раньше это было до - я думаю - 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, без каких-либо фактических доказательств. Это хороший способ приблизиться к этим вещам и жизни в целом.

 Смежные вопросы

  • Нет связанных вопросов^_^