Raku 总是解析吗?

Pet*_*uer 8 performance moarvm raku

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

目前看起来我无法启动任何运行时间低于 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
Run Code Online (Sandbox Code Playgroud)

Eli*_*sen 8

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

如果你的意思是你的脚本?是的。当前仅预编译模块。

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

Raku 缓存任何字节码吗?

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

因此,即使是在线用户也总是需要 >= 130 毫秒?

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

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

  • @PeterBauer“没有意义!” 目前尚不清楚您(和/或您的支持者)的意思是“我一定是误解了实际发生的事情”还是“您一定是误解了我们用户的需求”还是其他什么。(一旦澄清了这一点,就会更容易减少误解。正如莉兹的评论希望澄清的那样,如果你所说的“解析阶段”的意思是*解析所花费的时间*那么你就误解了莉兹答案的这方面。如果你的意思是“最短时间”在运行时之前”,那么您可能误解了莉兹的回答中的“仅......当前......此时”方面。等等) (5认同)