Вопрос

Что из них более эффективно в ColdFusion?

isDefined('url.myvar')

или

structKeyExists(url, 'myvar')
Это было полезно?

Решение

В эти дни (CF8 +) разница в скорости не это отличный. Однако, structKeyExists действительно немного быстрее. Вот почему.

Когда вы используете isDefined, строка, которую вы передаете, ищут как ключевое имя в нескольких областях. По состоянию на CF9, список областей наказания в заказах: (источник)

  1. Local (функционируйте только локальные, UDFS и CFCS)
  2. Аргументы
  3. Нить локальные (только внутри нити)
  4. Запрос (не настоящий объем, применяется для переменных в петлях запроса)
  5. Нить
  6. Переменные
  7. CGI.
  8. Каприз
  9. Урл
  10. Форма
  11. Печенье
  12. Клиент

Даже если вы используете название области с помощью isDefined (подобно: if isDefined('variables.foo')) список все еще будет проверен в порядке; и если переменная local.variables.foo определяется, он будет найден ДО variables.foo.

С другой стороны, structKeyExists только ищет структуру, которую вы передаете его для существования ключевого имени; Так что есть гораздо меньше мест, которые нужно будет посмотреть.

Используя более явный код (structKeyExists) Не только вы набираете некоторую производительность, но ваш код более читабелен и поддерживается, на мой взгляд.

Другие советы

Использовать тот, который легче читать И лучше всего показывает, что вы делаете.

Разница между ними невероятно Маленький, и очень, скорее всего, не стоит беспокоиться вообще.

Не тратьте время оптимизации времени, если у вас нет доказано а также повторяется прецедент который демонстрирует медлительность.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top