Я прочитал, что с помощью дротика ваше приложение может начать работать до 10 раз быстрее из-за моментальных снимков. Может ли кто-нибудь объяснить, что это на самом деле и как это работает? В каком приложении я могу использовать моментальные снимки?
Какова концепция моментального снимка в дротике?
Ответ 1
Dart Snapshots как Изображения Smalltalk в том смысле, что они позволяют практически мгновенно запускать приложения. Однако, в отличие от изображений Smalltalk, моментальные снимки не сохраняют состояние программы.
Это особенно полезно в более медленных мобильных устройствах, потому что они по своей природе медленнее и также ограничены памятью гораздо больше, чем настольная система. Эта причина и тот факт, что использование батареи заставляет нас закрывать ненужные программы, делает скорость запуска важной.
Dart решает эту проблему медленного запуска с помощью функции моментального снимка кучи, которая похожа на систему изображений Smalltalk. Куча приложения проходит, и все объекты записываются в простой файл. Обратите внимание: на данный момент дистрибутив Дарта поставляется с инструментом, который запускает Dart VM, загружает код приложения и непосредственно перед вызовом main, он получает снимок кучи. Dart VM может использовать такой файл моментального снимка для быстрой загрузки приложения.
Функция моментального снимка также используется для сериализации графов объектов, которые отправляются между Dart Isolates (сериализовано с помощью SnapshotWriter).
В настоящее время я не знаю, как инициировать моментальный снимок или иметь дело с ними. В будущем я ожидаю, что можно будет обслуживать файл моментальных снимков с веб-сервера и мгновенно обработать браузер 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, который отправляется как есть и медленно обрабатывается впоследствии.
А где бы вы хотели его использовать? Где бы вы ни находились. На стороне сервера это в основном уже происходит для вас (и не имеет значения, действительно). но с клиентской стороны это невозможно еще. Насколько я понимаю, можно будет использовать эти снимки в браузере для мгновенного запуска, но вам действительно нужно ждать, так как он недоступен на данный момент.