Раку всегда разбирает? - PullRequest
       14

Раку всегда разбирает?

7 голосов
/ 03 февраля 2020

raku -version Это версия Rakudo 2020.01, основанная на MoarVM версии 2020.01.1, реализующая Perl 6.d.

В настоящее время похоже, что я не могу запустить любую программу Raku Perl6 с временем выполнения ниже около 130 мс (в основном время запуска).
-Рако всегда повторно обрабатывает полный исходный код при запуске программы?
-Кэширует ли Raku какой-либо байт-код?
-Так что запуск даже в режиме onliner всегда занимает> = 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

1 Ответ

6 голосов
/ 03 февраля 2020

Всегда ли Раку повторно обрабатывает полный исходный код при запуске программы?

Если вы имеете в виду ваш сценарий? Да. В настоящее время предварительно скомпилированы только модули.

Если вы имеете в виду всю настройку Raku? Нет, тогда вы бы посмотрели в 100 раз больше.

Кеширует ли Raku какой-либо байт-код?

Установленные модули и модули, к которым осуществляется доступ через -Ilib, кэшируются в .precomp каталоги.

То есть, даже если онлайнер работает всегда,>> 130 мс?

На моей машине это около 120 мсек. Но да, в этом приблизительном. На данный момент. Частично это вызвано рядом инициализаций, которые выполняются при запуске: хотя при запуске были предприняты большие усилия, чтобы избежать ненужных инициализаций, это не проверялось много лет, как Perl.

Если вы сравниваете это, например, с Perl, вы должны понимать, что Raku дает вам встроенный Moose. Если вы запустите perl -MMoose -e '' на моей машине, время запуска будет всего на несколько миллисекунд ниже, чем у Raku.

...