Я очень сомневаюсь, что вы увидите производительность преимущества - и в некоторых случаях могут даже быть потери производительности, в зависимости от того, как вы их используете.Я сомневаюсь, что они были бы значительными.
Преимущество не в производительности, а в выражении ваших намерений и более четком выражении ваших намерений, что приводит к более читабельному (и безопасному для типов) коду.Например, с целочисленными флагами ничто не будет жаловаться, если вы попытаетесь использовать (скажем) HTTP_STATUS_UNAUTHORIZED в качестве значения для вашего режима общего доступа к файлам при вызове метода ... тогда как, если оба они были перечислениями, параметр был бы строго типизирован в1005 * действительно разрешают только режимы совместного использования файлов (или, по общему признанию, ноль, если вы говорите о Java).