在学习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概念理解相关推荐

  1. 深度学习中IU、IoU(Intersection over Union)的概念理解以及python程序实现

    from: 深度学习中IU.IoU(Intersection over Union)的概念理解以及python程序实现 IoU(Intersection over Union) Intersectio ...

  2. 高性能计算中并行的概念理解

    高性能计算中并行的概念理解 分类: 并行计算高性能计算HPC - General2011-11-09 22:54 932人阅读 评论(0) 收藏 举报 编译器编程parallel优化formsvect ...

  3. 目标检测基本概念理解之IoU(交并比)以及Python代码实现

    目标检测基本概念理解之IoU(交并比) 交并比理解 Python代码实现 计算IoU,矩形框的坐标形式为xyxy 计算IoU,矩形框的坐标形式为xywh 交并比理解 在检测任务中,使用交并比(Inte ...

  4. Hadoop:HDFS的概念理解和体系架构-成都加米谷大数据分享

    HDFS是什么? HDFS 全称 Hadoop Distributed File System ,简称HDFS,是一个分布式文件系统.它是谷歌的GFS提出之后出现的另外一种文件系统.它有一定高度的容错 ...

  5. muck数据的概念理解

    muck数据的概念理解 所谓muck表示"模仿","假的":也可翻译为mock-test. 很多项目案例的讲解中,经常会提及muck数据.muck对象.muck ...

  6. 事件与委托的一点概念理解

    事件与委托的一点概念理解 早就接触过delegate和event,但是始终是一知半解,今天刚好有机会就好好研究一下! Delegate 顾名思义就是委托,委托的意思就是麻烦别人帮我干些事情.比如,我要 ...

  7. 目标检测中IoU(Intersection over Union)的概念理解

    参考博客 深度学习中IU.IoU(Intersection over Union)的概念理解以及python程序实现 一.IoU(交并比)概念 Intersection over Union,是一种测 ...

  8. C/C++中宏概念理解

    C/C++中宏概念理解 C/C++中宏概念理解 宏替换是C/C++系列语言的技术特色,C/C++语言提供了强大的宏替换功能,源代码在进入编译器之前,要先经过一个称为"预处理器"的模 ...

  9. DSF学习1_Dubbo详解(一)分布式服务框架的概念理解

    Dubbo分布式服务框架的概念理解 Dubbo是是一个高性能,基于Java的RPC框架,由阿里巴巴开源.一个分布式的服务框架.可以实现SOA(面向服务的架构)架构. Dubbo使用的公司:京东.当当. ...

最新文章

  1. 找到一本不错的Linux电子书,附《Linux就该这么学》章节目录。
  2. Python基础1 历史 变量
  3. Python卸载报错:No Python 3.8 installation was detected
  4. RDP报表工具的环境搭建
  5. 三维空间中无人机路径规划的改进型蝙蝠算法
  6. 必看!超详细的电子元器件选型经验分享
  7. 设计基于计算机的机械手控制系统,基于PLC的工业机械手控制系统设计
  8. c语言出现源文件未编译,dev运行C语言出问题
  9. VS2017设置透明主题
  10. 如何验证服务器有没ftp服务,如何检查ftp服务器是否联机并获取它未生成的错误?...
  11. A problem has occurred and the system can‘t recover问题的解决
  12. HTTPResponse
  13. PHP 观察者模式 理解
  14. 实习报告1——人脸三维重建方法
  15. 互质 整除 同余
  16. 旧书网购_基于旧书的新工作簿
  17. wordpress html插件安装,WordPress 插件安装教程及方法
  18. 变频器的逆变、变频原理
  19. TF2.0 TFRecord创建和读取
  20. 微信公众号模板消息和图文消息的区别

热门文章

  1. 社区团购小程序拼团秒杀砍价社区发帖社区团小程序系统源码搭建教程
  2. 常用网站推广技巧和方法
  3. 【python】词性标注结合镜像分词
  4. 【论文笔记】Supervised Attentions for Neural Machine Translation
  5. 响铃:Q1财报“意料之外”增长,百度短视频为何成了意外中的意外?
  6. 在电子阅读的时代,聊聊纸质书
  7. u-boot代码之启动
  8. 高耐压30V线性LDO芯片
  9. Java多个ppt合并脚本_Apache POI PPT - 合并
  10. 2017年网络统考计算机成绩,2017年12月计算机基础统考成绩查询