DART :为什么 dart 应用程序的规模如此之大?(控制台应用程序)

Air*_*717 4 windows native dart dart2native

我用 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));
}
Run Code Online (Sandbox Code Playgroud)

jul*_*101 6

大可执行文件的原因是因为dart2native编译器并没有真正制作一个可执行文件,您可以从头开始直接在您的机器上运行。相反,它将dartaotruntime可执行文件与 AOT 编译的 Dart 程序打包在一起。

dartaotruntime包含了所有的飞镖运行时库和dart2native不从删除任何东西dartaotruntime(因为它是一个二进制也很难),所以你会得到整个运行时,即使你只增加了两个数字。

但它并没有那么糟糕,因为它是每个程序的单一成本惩罚。所以如果你制作一个非常大的程序,dartaotruntime仍然只包含一次。

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

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

我已经为 Windows 64 位在 Dart.exe.aotDart 上编译了你的程序。版本 2.8.2 以便您可以看到大小差异:

在此处输入图片说明

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

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


小智 -2

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