返回首页
一周热榜
嘿,HN,
我们写了一个相当不错的Gradle插件,想和大家分享一下。
结果发现,如果对Java和Kotlin编译器进行原生镜像处理,特别是对于“小型”项目(少于10,000个类),可以获得显著的性能提升。
通过对编译器进行原生镜像编译,通常在Gradle/Maven等工具中经历的JIT预热过程被跳过。启动时间非常快,因为原生镜像将堆封装在二进制文件中。javac的原生版本从输入生成的输出是完全相同的。这是完全相同的代码,只是经过AOT编译、转换为机器代码,并由GraalVM进行了预优化。
当然,原生镜像在所有情况下并不是最优的。经过预热的JIT仍然优于原生镜像,但我认为大多数项目在通过Gradle或Maven时“从未达到”完全预热的JIT,因为运行编译器的虚拟机很少能存活足够长的时间。
Elide(这个插件使用的工具)也支持获取Maven依赖。当激活时,它会准备一个本地的m2根目录,以便Gradle在需要时能够找到已经在磁盘上的依赖。初步基准测试显示,由于锁定文件防止了不必要的重新解析,原生镜像解析器的性能提升与编译器相似,达到了100倍以上的提升。
我们(作者)非常欢迎大家对改进这个Gradle插件或底层工具链提出反馈。请告诉我们你的想法!
创建了一个Gradio应用,方便可视化苹果最近发布的ego-dex数据集。没有简单的可视化工具,往往很难理解最近发布的数据集中的内容,因此我使用rerun构建了这个可视化工具。