考虑-
文件编码,
文件大小
内部数据结构,
启动时间等
选择dill文件启动dart应用程序的主要原因是什么? 哪一个具有更好的启动时间性能?为什么呢?
答案 0 :(得分:0)
https://mrale.ph/dartvm/是Dart语言团队长期成员的精彩总结。
据我了解,莳萝文件和内核快照是同一回事。 dill
只是用于内核(AoT快照)的文件扩展名
由于Dart 2 VM不再具有直接从原始源执行Dart的功能,因此VM希望获得包含串行化Kernel AST的Kernel二进制文件(也称为莳萝文件)。快照
我假设您真正想知道的是AoT和JiT快照之间的区别。
最初的快照不包含机器代码,但是这 后来在开发AOT编译器时添加了此功能。动机 用于开发AOT编译器和带代码的快照是为了允许VM 在由于平台而无法进行JITing的平台上使用 级别限制。
带代码的快照的工作方式几乎与普通快照相同 两者之间的差别很小:它们包含一个与 快照的其余部分不需要反序列化。这段代码 放置的部分使其可以直接成为堆的一部分 映射到内存后。
启动时间
引入了AppJIT快照,以减少大型Dart应用程序(如dartanalyzer或dart2js)的JIT预热时间。当这些工具用于小型项目时,他们花费的实际时间与VM花费的JIT编译这些应用程序的时间一样。
所以使用JiT的主要原因是因为不允许AoT(主要是iOS) 或对于寿命短的命令,根据代码使用情况(热点)进行连续优化不太可能导致任何结果。
有关尺寸的讨论,另请参见https://github.com/dart-lang/sdk/issues/28655#issuecomment-428370886