Производительность, пораженная использованием MooseX:: Объявить главным образом встреченный во время запуска?

Производительность, пораженная использованием MooseX:: Объявите главным образом встреченный, в то время как это делает свое начальное волшебство (т.е. "перевод" определения в стандартный синтаксис Perl)? т.е. однажды компиляция и начальная установка во время выполнения завершено, там различие в производительности в вызове MooseX:: Объявить метод по сравнению с методом, определенным через традиционное объявление?

5
задан brian d foy 30 March 2010 в 17:07
поделиться

2 ответа

Ответ - и да, и нет. Так как MooseX::Declare использует MooseX::Method::Signatures для распаковки и проверки параметров, это накладные расходы во время выполнения по сравнению с отсутствием проверки параметров вообще.

Но если ваше представление о "традиционном объявлении" включает проверку количества и типа параметров (а оно должно включать, если вы хотите надежный код), то нет причин думать, что проверка MXD/MXMS будет медленнее, чем проверка, которую вы делаете сами.

8
ответ дан 13 December 2019 в 22:05
поделиться

MooseX::Declare - это преобразование декларативного синтаксиса в "настоящий" код Perl во время компиляции. Все его накладные расходы приходятся на время компиляции.

Накладные расходы во время выполнения, о которых вы говорите, - это проверка типов Moose и принуждение. Обе эти функции необязательны: вам не нужно указывать квалификатор типа, и вам не нужно указывать is coerce. Если вы не используете ни то, ни другое, ваша производительность во время выполнения должна быть очень близка к той, которая была бы без магии MooseX::Declare.

Так что с точки зрения времени выполнения это выигрыш/выигрыш. Вы платите только за те функции, которые используете. Валидация типов - это то, что вам все равно пришлось бы делать вручную, а принуждение, хотя оно определенно снижает производительность, включается на основе каждого аргумента.

2
ответ дан 13 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: