8

raku -version 这是基于 MoarVM 版本 2020.01.1 构建的 Rakudo 版本 2020.01,实现 Perl 6.d。

目前看起来我无法启动任何运行时间低于 130 毫秒(主要是启动时间)的 Raku Perl6 程序。
- Raku 是否总是在程序启动时重新解析完整的源代码?
- Raku 是否缓存任何字节码?
- 所以即使是在线用户也总是需要 >= 130 毫秒?

time raku --stagestats hello_world.pl
Stage start      :   0.000
Stage parse      :   0.133
Stage syntaxcheck:   0.000
Stage ast        :   0.000
Stage optimize   :   0.002
Stage mast       :   0.006
Stage mbc        :   0.001
Stage moar       :   0.000
hello world
hello world
TEST
hello world

real    0m0,183s
user    0m0,231s
sys 0m0,016s
4

1 回答 1

8

Raku 是否总是在程序启动时重新解析完整的源代码?

如果你的意思是你的脚本?是的。目前只有模块是预编译的。

如果您的意思是整个 Raku 设置?不,那么你会看到比这多 100 倍的东西。

Raku 是否缓存任何字节码?

已安装的模块和通过其访问-Ilib的模块缓存在.precomp目录中。

所以即使是在线用户也总是需要 >= 130 毫秒?

在我的机器上大约是 120 毫秒。但是,是的,在那个球场。在这个时间点。部分原因是在启动时进行了许多初始化:尽管已经采取了很多措施来确保在启动时没有进行不必要的初始化,但这并没有像 Perl 那样经过多年的审查。

如果您将此与 Perl 进行比较,您应该意识到 Raku 为您提供了 Moose 内置。如果您perl -MMoose -e ''在我的机器上运行,启动时间仅比 Raku 低几毫秒。

于 2020-02-03T09:40:27.277 回答