Мне действительно нравится функция проекта lombok, которая избавляется от кода шаблона. Мой старший предложил мне, что ломбок, похоже, использует отражение, чтобы уменьшить код шаблона, и однажды я услышал, что использование эффекта отражения. У меня вопрос, есть ли проблемы с использованием проекта lombok?Может ли ломбок снизить производительность?
12
A
ответ
19
Ломбок не использует отражение во время выполнения. Он подключается к внутренним компонентам компилятора и добавляет код в классы во время компиляции, который затем компилируется в обычном режиме.
6
@chrylis ответ правильный, но будьте осторожны с графом объектов (@Data
и @ToString
аннотация), например.
@Data
public class A {
private B b;
}
@Data
public class B {
private A a;
}
Lombok создаст toString с бесконечной рекурсией внутри. Вы должны использовать что-то вроде @ToString(exclude = {"a"})
внутри класса B
Смежные вопросы
- 1. Может ли метод RegisterRoutes снизить производительность?
- 2. Может ли setInterval резко снизить производительность браузера?
- 3. Могут ли условия гонки снизить производительность кода?
- 4. SPARK: Увеличение количества DRIVER MEMORY может снизить производительность?
- 5. Получение дополнительных методов WCF в службе может снизить производительность?
- 6. Может ли оптимизация снизить безопасность потоков?
- 7. Может ли призывать получателя суперкласса снизить эффективность?
- 8. Будет ли больше атрибутов поиска в ehcache снизить производительность кеша?
- 9. Использование EJB 3 - когда это не нужно? может ли это снизить производительность?
- 10. Может ли параллелизм улучшить производительность?
- 11. Как я могу грациозно снизить производительность, учитывая ограниченную память?
- 12. петли разворачивая с динамическим параллелизмом снизить производительность времени
- 13. Снизить шаблон
- 14. Ломбок на Дженкинс
- 15. Ломбок с гибернатом
- 16. Использование Ломбок с Spring
- 17. Ломбок свойства JavaFX
- 18. SonarQube Ломбок признание Getter
- 19. Ломбок: RequiredArgsConstructor не работает
- 20. Jackson2 и Ломбок @Builder
- 21. Ломбок - конфликт Hrisey
- 22. Ломбок требует обработки аннотации
- 23. Ломбок не добавляет методы
- 24. Может ли const-correctness повысить производительность?
- 25. Может ли распараллеливание отрицательно влиять на производительность?
- 26. Может ли конструктор повлиять на производительность?
- 27. Может ли feenableexcept повредить производительность программы?
- 28. Может ли включение замков ухудшить производительность?
- 29. Может ли генерация списка улучшать производительность Python?
- 30. Может ли несколько NSURLConnection задержать производительность?
Правильно, но обратите внимание, что это довольно нормально. Коллекции Java и Guava ведут себя одинаково, а также 'Arrays.toString (Object)'. Мало того, что мог сделать ломбок, поскольку он не генерирует каждую реализацию 'toString'. – maaartinus
Но у меня нет каких-либо коллекций в моем примере. Результат по умолчанию toString выглядит как «[email protected]». Таким образом, нет рекурсии. Более того, аннотация @Data lombok может создать неэффективную реализацию методов «hashCode» и «equals». PS Я доволен lombok и по-прежнему рекомендую использовать его – sibnick
Хорошо, у вас нет коллекций, но у вас может быть какой-то объект с рукописным 'toString'. В зависимости от его реализации вам нужно исключить поле или нет. Ломбок мог справиться с этим, отслеживая все свои вызовы 'toString' в' ThreadLocal', но это замедлит все вызовы. Это может быть полезной функцией, но вряд ли кто-то ее попросил. +++ Почему неэффективный 'hashCode' /' equals'? Из-за того, что они обрабатывают массивы так же, как Java, как списки? PS: Я очень доволен Lombok (я считаю, что это больше, чем функции Java 8). –
maaartinus