Dart:快照与 AOT

Dan*_*ira 6 dart

我搜索了很多关于这种伟大语言的信息,并在这个页面https://github.com/dart-lang/sdk/wiki/Snapshots上找到了自己, 但它没有回答一些问题:

  • 快照和 AOT 有什么区别?哪个更快,为什么?
  • 为什么在 Windows 机器上生成的 AOT 不能在 Linux 上运行,但通过生成的快照可以 dart --snapshot_kind=kernel?什么是“内核”?是不是比较慢?
  • 内核快照和 JIT 快照有什么区别?哪个更快?

Tid*_*der 8

  • 使用快照,您的任何代码(内核快照)或仅部分代码(JIT 快照)都不会被预编译为二进制格式。使用 AOT,您的所有代码都被预编译为二进制(特定于平台)格式。预编译二进制代码 (AOT) 速度更快,因为不需要在运行时编译代码。
  • 如上所述,AOT 编译代码被转换为平台特定的二进制代码。因此你不能在 Linux 机器上运行为 Windows 编译的程序 AOT。使用内核快照,您的任何代码都不会被预编译。所以它在平台之间是可移植的,但必须在运行时编译。所以是的,这更慢。
  • 同样如上所述,使用内核快照,您的代码不会被预编译。使用 JIT 快照,程序在测试运行中执行,并且执行的代码的每个部分都被预编译为特定于平台的二进制格式。所以 JIT 快照比内核快照快。