我已经读过,使用dart,你的应用程序因快照而可以启动速度提高10倍。任何人都可以解释它到底是什么以及它是如何工作的?在什么样的应用程序中我会使用快照?
我已经读过,使用dart,你的应用程序因快照而可以启动速度提高10倍。任何人都可以解释它到底是什么以及它是如何工作的?在什么样的应用程序中我会使用快照?
Dart的快照就像 Smalltalk图像 从某种意义上说,它们允许几乎即时的应用启动。但是,与Smalltalk图像不同,快照不存储程序状态。
这在速度较慢的移动设备中尤其有用,因为它们本身速度较慢,并且受内存的限制远远超过桌面系统。这个原因和电池使用需要我们关闭不必要的程序的事实使启动速度变得重要。
Dart通过堆快照功能解决了这个慢启动问题,这与Smalltalk的图像系统类似。遍历应用程序的堆,并将所有对象写入简单文件。注意:目前,Dart发行版附带了一个工具,可以启动Dart VM,加载应用程序的代码,在调用main之前,它会获取堆的快照。 Dart VM可以使用此类快照文件快速加载应用程序。
快照功能还用于序列化在Dart Isolates(使用SnapshotWriter序列化)之间发送的对象图。
目前我不知道如何启动快照或处理它们。将来,我希望可以从Web服务器提供快照文件,并立即由浏览器Dart VM处理。
快照格式本身是跨平台的,这意味着它可以在32位,64位机器之间工作,等等。格式已经完成,因此可以快速读入内存,并强调最小化指针修正等额外工作。
这是snapshot.cc的源代码: http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot.cc
和测试: http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot_test.cc
因此它可以将应用程序启动速度提高10倍的原因是因为它 不 一堆源代码,如JavaScript,按原样发送,然后慢慢处理。
你想在哪里使用它?你可能在哪里。在服务器端,它基本上已经发生在您身上(并不重要)。但在客户端,这是不可能的 然而。据我了解,可以将这些快照提供给浏览器以便即时启动,但是你必须等待,因为它现在还没有。
Dart的快照就像 Smalltalk图像 从某种意义上说,它们允许几乎即时的应用启动。但是,与Smalltalk图像不同,快照不存储程序状态。
这在速度较慢的移动设备中尤其有用,因为它们本身速度较慢,并且受内存的限制远远超过桌面系统。这个原因和电池使用需要我们关闭不必要的程序的事实使启动速度变得重要。
Dart通过堆快照功能解决了这个慢启动问题,这与Smalltalk的图像系统类似。遍历应用程序的堆,并将所有对象写入简单文件。注意:目前,Dart发行版附带了一个工具,可以启动Dart VM,加载应用程序的代码,在调用main之前,它会获取堆的快照。 Dart VM可以使用此类快照文件快速加载应用程序。
快照功能还用于序列化在Dart Isolates(使用SnapshotWriter序列化)之间发送的对象图。
目前我不知道如何启动快照或处理它们。将来,我希望可以从Web服务器提供快照文件,并立即由浏览器Dart VM处理。
快照格式本身是跨平台的,这意味着它可以在32位,64位机器之间工作,等等。格式已经完成,因此可以快速读入内存,并强调最小化指针修正等额外工作。
这是snapshot.cc的源代码: http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot.cc
和测试: http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot_test.cc
因此它可以将应用程序启动速度提高10倍的原因是因为它 不 一堆源代码,如JavaScript,按原样发送,然后慢慢处理。
你想在哪里使用它?你可能在哪里。在服务器端,它基本上已经发生在您身上(并不重要)。但在客户端,这是不可能的 然而。据我了解,可以将这些快照提供给浏览器以便即时启动,但是你必须等待,因为它现在还没有。