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

时间:2020-05-30 17:19:38

标签: windows dart native dart2native

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

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

这是代码

PeterParker
True
Peter-Parker
True
Peter-P-arker
False
Peter
False
PeterParker-
False
-PeterParker
False
1PeterParker
False
Peter Parker
False
PeterParkerSpiderMan
False

2 个答案:

答案 0 :(得分:4)

使用大型可执行文件的原因是因为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相同的版本来编译文件。

答案 1 :(得分:-2)

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