Lombok @Builder - 对性能有好处吗?

Lombok @Builder - is good for performance?

我不确定是否应该使用 Lombok 的 @Builder,因为在我看来 @Builder 创建了 类.

的两个实例
myClassNameBuilder = MyClassName.builder(); // create ClassNameBuilder instance

myClassNameBuilder.build(); // create ClassName instance but ClassNameBuilder instance still exists in memory.

我认为这对性能不利,因为垃圾收集器和 JIT 必须处理 ClassNameBuilder 的所有实例。

我的问题:什么时候应该使用@Builder

一般情况下,不要进行优化,除非您确切地知道您遇到了性能问题以及出现问题的原因。

是否使用构建器模式的决定应该基于一个方面:它是否提高了代码质量(即可维护性、可读性等)? 如果您稍后发现它会导致性能问题(这不太可能),您仍然可以找到解决方案,甚至可能保留构建器模式。

不太可能导致问题的原因有以下几个:

  1. 一般来说,对于在使用后根本没有被引用的对象,GC 的速度非常快,构建器实例通常就是这种情况。
  2. 如果对象仅在单个堆栈框架中使用(即它们不会传递给其他方法或作为 return 值),分配和 GC 会更快(如果需要,请搜索“逃逸分析”了解详情)。很多时候builder都是这样使用的
  3. JIT 编译也可以忽略不计,因为它是每个运行时任务一次,而且构建器代码很简单,因为它主要由简单的设置器和实例变量组成。