snapshot、dill概念理解
在学习flutter过程中,遇到一些snapshot、dill文件,不知道它们是什么,是做什么的。其实它们是一种dart的编译产物。而snapshot和dill在一些情况下是同一个东西。
dart产物类型
- exe:可执行文件,自带了精简版的Dart运行环境
- aot-snapshot:一种特定架构的文件,没有dart运行环境
- jit-snapshot:一种特定架构的文件。它里面是在程序运行期间生成的已解析的类和已编译的代码
- kernel snapshot:可移植的二进制快照
- js:可部署的JavaScript文件
exe(独立可执行文件 self-contained executables)
exe独立可执行文件,可以在Windows、MacOS或Linux上单独运行。是由指定的dart文件及其依赖编译而成。它里面带有小型的dart运行环境,可以用来处理类型检查和垃圾回收。
编译:
dart2native hello.dart
运行:
➜ dartTest ./hello.exe
hello world
上面运行的时候不需要dart命令,由此也可以知道它是独立的可执行文件,内部有dart运行环境。
最新的编译命令:替换了dart2native命令
dart compile exe hello.dart
aot-snapshot
使用AOT snapshots可以减少磁盘空间。它是一种指定当前框架的产物。即:如果你使用macos创建的.aot文件,那么你只能运行在macOS上。
编译:
dart2native hello.dart -k aot
运行:运行时需要使用dartatoruntime命令
➜ dartTest dartaotruntime hello.aot
hello world
最新的编译命令:
dart compile aot-snapshot hello.dart
jit-snapshot
JIT snapshot中有所有的解析类和编译的代码(在程序运行的时候生成的),当运行jit-snapshot时,dart虚拟机不需要再去解析和编译类,因此VM可以运行的更快。
编译:
dart --snapshot-kind=app-jit --snapshot=helloJit.dart.snapshot hello.dart
运行:
➜ dartTest dart helloJit.dart.snapshot
hello world
最新的编译命令:
dart compile jit-snapshot ./hello.dart
kernel snapshot
kernal snapshot是单个可移植文件,能运行在所有的操作系统和CPU架构上。kernel snapshot包含了dart程序的抽象语法树(AST)的二进制形式
编译:默认不指定kind,就是kernel类型
dart --snapshot-kind=kernel --snapshot=hello1.dart.snapshot hello.dart
运行:
➜ dartTest dart hello1.dart.snapshot
hello world
最新命令:
dart compile kernel ./hello.dart
查看其生成的文件:hello.dill。由此我们可知dill文件就是snapshot类型为kernel的文件。它们是一个东西
产物大小比较
-rw-r--r-- 1 laomao staff 1007072 May 13 14:05 hello.aot
-rw-r--r-- 1 laomao staff 31 May 12 17:54 hello.dart
-rw-r--r-- 1 laomao staff 568 May 13 14:35 hello.dill
-rwxr-xr-x 1 laomao staff 7269472 May 13 11:57 hello.exe
-rw-r--r-- 1 laomao staff 3958304 May 13 14:27 hello.jit
可以得出:exe > jit-snapshot > aot-snapshot > kernel > dart source code
exe中有dart运行环境所以很大,jit-snapshot和aot-snapshot是特定架构文件,kernel是AST的二进制文件,可以在平台之间迁移。
snapshot、dill概念理解相关推荐
- 深度学习中IU、IoU(Intersection over Union)的概念理解以及python程序实现
from: 深度学习中IU.IoU(Intersection over Union)的概念理解以及python程序实现 IoU(Intersection over Union) Intersectio ...
- 高性能计算中并行的概念理解
高性能计算中并行的概念理解 分类: 并行计算高性能计算HPC - General2011-11-09 22:54 932人阅读 评论(0) 收藏 举报 编译器编程parallel优化formsvect ...
- 目标检测基本概念理解之IoU(交并比)以及Python代码实现
目标检测基本概念理解之IoU(交并比) 交并比理解 Python代码实现 计算IoU,矩形框的坐标形式为xyxy 计算IoU,矩形框的坐标形式为xywh 交并比理解 在检测任务中,使用交并比(Inte ...
- Hadoop:HDFS的概念理解和体系架构-成都加米谷大数据分享
HDFS是什么? HDFS 全称 Hadoop Distributed File System ,简称HDFS,是一个分布式文件系统.它是谷歌的GFS提出之后出现的另外一种文件系统.它有一定高度的容错 ...
- muck数据的概念理解
muck数据的概念理解 所谓muck表示"模仿","假的":也可翻译为mock-test. 很多项目案例的讲解中,经常会提及muck数据.muck对象.muck ...
- 事件与委托的一点概念理解
事件与委托的一点概念理解 早就接触过delegate和event,但是始终是一知半解,今天刚好有机会就好好研究一下! Delegate 顾名思义就是委托,委托的意思就是麻烦别人帮我干些事情.比如,我要 ...
- 目标检测中IoU(Intersection over Union)的概念理解
参考博客 深度学习中IU.IoU(Intersection over Union)的概念理解以及python程序实现 一.IoU(交并比)概念 Intersection over Union,是一种测 ...
- C/C++中宏概念理解
C/C++中宏概念理解 C/C++中宏概念理解 宏替换是C/C++系列语言的技术特色,C/C++语言提供了强大的宏替换功能,源代码在进入编译器之前,要先经过一个称为"预处理器"的模 ...
- DSF学习1_Dubbo详解(一)分布式服务框架的概念理解
Dubbo分布式服务框架的概念理解 Dubbo是是一个高性能,基于Java的RPC框架,由阿里巴巴开源.一个分布式的服务框架.可以实现SOA(面向服务的架构)架构. Dubbo使用的公司:京东.当当. ...
最新文章
- 找到一本不错的Linux电子书,附《Linux就该这么学》章节目录。
- Python基础1 历史 变量
- Python卸载报错:No Python 3.8 installation was detected
- RDP报表工具的环境搭建
- 三维空间中无人机路径规划的改进型蝙蝠算法
- 必看!超详细的电子元器件选型经验分享
- 设计基于计算机的机械手控制系统,基于PLC的工业机械手控制系统设计
- c语言出现源文件未编译,dev运行C语言出问题
- VS2017设置透明主题
- 如何验证服务器有没ftp服务,如何检查ftp服务器是否联机并获取它未生成的错误?...
- A problem has occurred and the system can‘t recover问题的解决
- HTTPResponse
- PHP 观察者模式 理解
- 实习报告1——人脸三维重建方法
- 互质 整除 同余
- 旧书网购_基于旧书的新工作簿
- wordpress html插件安装,WordPress 插件安装教程及方法
- 变频器的逆变、变频原理
- TF2.0 TFRecord创建和读取
- 微信公众号模板消息和图文消息的区别