Производительность, пораженная использованием MooseX:: Объявите главным образом встреченный, в то время как это делает свое начальное волшебство (т.е. "перевод" определения в стандартный синтаксис Perl)? т.е. однажды компиляция и начальная установка во время выполнения завершено, там различие в производительности в вызове MooseX:: Объявить метод по сравнению с методом, определенным через традиционное объявление?
Ответ - и да, и нет. Так как MooseX::Declare использует MooseX::Method::Signatures для распаковки и проверки параметров, это накладные расходы во время выполнения по сравнению с отсутствием проверки параметров вообще.
Но если ваше представление о "традиционном объявлении" включает проверку количества и типа параметров (а оно должно включать, если вы хотите надежный код), то нет причин думать, что проверка MXD/MXMS будет медленнее, чем проверка, которую вы делаете сами.
MooseX::Declare - это преобразование декларативного синтаксиса в "настоящий" код Perl во время компиляции. Все его накладные расходы приходятся на время компиляции.
Накладные расходы во время выполнения, о которых вы говорите, - это проверка типов Moose и принуждение. Обе эти функции необязательны: вам не нужно указывать квалификатор типа, и вам не нужно указывать is coerce
. Если вы не используете ни то, ни другое, ваша производительность во время выполнения должна быть очень близка к той, которая была бы без магии MooseX::Declare.
Так что с точки зрения времени выполнения это выигрыш/выигрыш. Вы платите только за те функции, которые используете. Валидация типов - это то, что вам все равно пришлось бы делать вручную, а принуждение, хотя оно определенно снижает производительность, включается на основе каждого аргумента.