Сравнения производительности перечислимых оценок и ints

Почему бы не использовать могучий LEAD / LAG?

SELECT * FROM (
SELECT id,
       event_type,
       event_date,
       user_id,
       CASE
         WHEN event_type = 'USER_DELETED' THEN LEAD(EVENT_DATE) OVER (PARTITION BY useR_id ORDER BY event_type DESC) 
         ELSE NULL
       END  AS CREATED
FROM   user_events
WHERE event_type IN ('USER_ACTIVATED','USER_DELETED')
)
WHERE created > event_date
5
задан Adam Naylor 2 January 2009 в 12:45
поделиться

3 ответа

В Перечислениях C# встраиваются, чтобы быть константами compilier так или иначе, таким образом, преимущество является четкостью кода

11
ответ дан 18 December 2019 в 13:20
поделиться

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

  1. myEnumValue. ToString ().
  2. Перечисление. Синтаксический анализ ()
  3. Перечисление. IsDefined ()
  4. Перечисление. GetName ()
  5. Перечисление. GetNames ()

В случае констант опция выполнения любых операций, которые требуют, не существует отражение. Однако в случае перечислений это делает. Таким образом, необходимо будет быть осторожными с этим.

Я видел отчеты о профиле, где операции, касающиеся перечислимых проверок/, отражения взяли до 5% процессорного времени (сценарий, где перечислимые проверки были сделаны на каждом вызове к методу API). Это может быть значительно уменьшено путем записи класса, который кэширует результаты отражения перечислимых используемых типов.

Однако я рекомендовал бы принять решение об использовании перечисления по сравнению с константой на основе того, что имеет смысл с точки зрения дизайна. Это при проверке, что команда знает о последствиях производительности операций, включающих отражение.

2
ответ дан 18 December 2019 в 13:20
поделиться

Кроме того, я не уверен, что Вы должны быть взволнованы по поводу этого вообще. Это действительно походит на преждевременную оптимизацию. Я уверен что в любой системе, существуют большие узкие места, чем перечислимые сравнения.:)

1
ответ дан 18 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: