官术网_书友最值得收藏!

Using snapshotting

One of the advantages of running a Dart app on its own VM is that we can apply snapshotting, thereby reducing the startup time compared to JavaScript. A snapshot is a file with an image of your app in the byte form, containing all the Dart objects as they appear in the heap memory.

How to do it...

To generate a script snapshot file called prorabbits from the Dart script prorabbits.dart, issue the following command:

dart --snapshot=prorabbits prorabbits.dart

Then, start the app with dart prorabbits args, where args stands for optional arguments needed by the script.

How it works...

A script snapshot is the byte representation of the app's objects in the memory (more precisely in the heap of the started isolate) after it is loaded, but before it starts executing. This enables a much faster startup because the work of tokenizing and parsing the app's code was already done in the snapshot.

There's more...

This recipe is intended for server apps or command-line apps. A browser with a built-in Dart VM can snapshot your web app automatically and store that in the browser cache; the next time the app is requested, it starts up way faster from its snapshot. Because a snapshot is in fact a serialized form of an object(s), this is also the way the Dart VM uses to pass objects between isolates. The folder dart/dart-sdk/bin/snapshots contains snapshots of the main Dart tools.

See also

  • Occasionally, your app needs access to the operating system, for example, to get the value of an environment variable to know where you are in the filesystem, or to get the number of processors when working with isolates. Refer to the Using isolates in the Dart VM and Using isolates in web apps recipes, in Chapter 8, Working with Futures, Tasks, and Isolates, for more information on working with isolates.
主站蜘蛛池模板: 岫岩| 凤阳县| 镇安县| 垣曲县| 永州市| 改则县| 日喀则市| 措美县| 黄浦区| 高安市| 石首市| 平原县| 苏尼特左旗| 柞水县| 梁平县| 石家庄市| 伽师县| 恭城| 五家渠市| 河津市| 桐乡市| 汉阴县| 应用必备| 于田县| 榆社县| 扬中市| 维西| 芜湖市| 万源市| 昌吉市| 安塞县| 伊金霍洛旗| 荔浦县| 区。| 沧州市| 兴业县| 九龙坡区| 永川市| 成武县| 平远县| 临沧市|