anm*_*anm 4 java performance build lombok ibm-rad
如果我在一个项目(大约15个单独的项目-EJB,Web等)中使用Lombok,则Lombok会使构建过程减慢2-3倍。有什么解决办法吗,还是龙目岛的劣势?
刚看到这个项目的规模,这是约400 @Getter,120 @Data,250 @Setter和100 @EqualsAndHashCode。
环境:具有最新版本的Lombok(0.11.6)的IBM Rational Application Developer 8.0.4
有什么想法可以使其更快吗?
最后,有可用的边缘构建,可大大加快Lombok的速度!他们做了很多工作来加快速度,现在对我来说效果很好。构建时间几乎减少了一半,而且每次保存文件时我都不必等待。
我还对项目进行了组合,以进行速度比较,并且组合代码和带有lombok批注的代码之间的差异不是很大。
您可以在此处下载edge-build:http : //projectlombok.org/download-edge.html
Lombok是注释处理器(如果需要的话,是编译器插件)。在编译时,每次在代码中找到一组特定的批注时都会调用它,并有机会生成新的源代码或引发编译器错误。如果在编译回合中产生了新的内容,则必须进行另一件事,直到所有内容都被成功编译为止。因此,是的,找到注释,根据需要对其进行处理(请参见下文)并运行额外的编译回合需要花费时间。
注释处理器规范明确禁止它们修改现有代码-您可以生成新的类或其他文件(.properties等),但不能更改现有代码。Lombok通过检测使用的编译器并破解其内部API来更改AST内存以添加访问器等来解决此问题。这太可怕了。
我认为,这是一项重大技术风险。最后,Lombok不会执行您的IDE无法做的任何事情-生成访问器等,但是可能危及您的整个项目-如果您升级编译器而Lombok不支持它,或者引入了bug,该怎么办?您最终得到的是非编译代码(或者,您的情况是非常缓慢的编译),仅是隐藏了一些无害的样板方法,只不过在代码中占了几行。但那只是我的个人意见 :)
因此,回到您的问题,除了完全删除Lombok,我看不到如何获得更好的编译时间。
| 归档时间: |
|
| 查看次数: |
3442 次 |
| 最近记录: |