DART:为什么Dart应用如此大? (控制台应用程序)

问题描述 投票:-1回答:2

我用dart制作了一个控制台应用程序,可以计算2个数字并将其打印出来大小约5 MB!

下载链接(仅Windows)https://drive.google.com/open?id=1sxlvlSZUdxewzFNiAv_bXwaUui2gs2yA

这里是代码

import 'dart:io';

int inputf1;
int inputf2;
int inputf3;

void main() {
  stdout.writeln('Type The First Number');
  var input1 = stdin.readLineSync();
  stdout.writeln('You typed: $input1 as the first number');
  sleep( Duration(seconds: 1));
  stdout.writeln('\nType The Second Number');
  var input2 = stdin.readLineSync();
  stdout.writeln('You typed: $input2 as the second number');
  sleep( Duration(seconds: 1));
  inputf1 = int.parse(input1);
  inputf2 = int.parse(input2);

  inputf3 = inputf1 + inputf2;
  print('\nfinal answer is : $inputf3');
  sleep( Duration(seconds: 10));
}
windows dart native dart2native
2个回答
1
投票

之所以使用较大的可执行文件,是因为dart2native编译器并非真正使您无法直接在计算机上运行可执行文件。而是将dartaotruntime可执行文件与AOT编译的Dart程序一起打包。

dartaotruntime包含所有Dart运行时库,并且dart2native不会从dartaotruntime中删除任何内容(由于它是二进制文件,因此也很困难,因此即使您只添加两个数字,您也将获得整个运行时。

但是还不错,因为每个程序都要付出一次代价。因此,如果您编写一个非常大的程序,则dartaotruntime仍然只包含一次。

但是,如果要在单个程序包中部署许多小程序,我建议您将-k aot参数添加到dart2native,以便它代替可执行文件生成.aot文件,然后可以使用dartaotruntime <program.aot>运行]。

这会使您的部署更加复杂,但是您只需要提供dartaotruntime二进制文件以及多个.aot文件。

我已经在Windows 64位Dart上将您的程序编译为.exe.aot。版本2.8.2,因此您可以看到大小差异:

enter image description here

同样,-k aot如果只打算部署一个可执行文件,则不会节省任何磁盘空间。但是,如果您的项目包含许多程序,则可以节省很多。

还应注意,.aot文件与.exe文件一样依赖于平台。并且您应该使用用于编译文件的相同版本的dartaotruntime


0
投票

这是因为原生dart应用是通过合并渲染引擎制作的...我知道这对所有基于dart的flutter应用都是正确的。也看这个https://medium.com/@rajesh.muthyala/app-size-in-flutter-5e56c464dea1

© www.soinside.com 2019 - 2024. All rights reserved.