Kotlin编译器

Kotlin 的编译器通过直接启动一个 IDE 的方式处理各种源代码文件,如何评价这种做法?

ice1000

当然这就很方便,因为IDE的indexing很靠谱。不过IDE的indexing方式会不会有性能问题?和其他编译器的实现有什么异同?


Preview:

Cancel

很明显,IDE的多线程indexing、具有极高优化的Parsing就在这个地方显现出了优势。而缺点就是即使只启动了一个微缩的IDE,也具有相对较高的性能开销,以及启动了很多对编译器来说不必要的服务(比如和源码索引有关的)。

另一个缺点,就是这样打包出来的编译器十分巨大(就是一个IDE+一个插件),而且和IDE不能放在同一个JVM里运行(大量全限定名相同的类),JB的解决方法是使用ProGuard进行强力优化,并在编译的时候修改了大量类的包名前缀,使得JVM可以同时加载两份原本相同的类。

最终,在有500MB左右的依赖的情况下,打出来的包有30MB,运行十分稳定,但有很多编译器里存在的API一调用就会触发NoClassDefException。

Edited at 07/02/2018

ice1000太强啦 不懂

Created at 07/02/2018

Home

Babel

Knowledge

Epistemology

Settings