2009-02-26 3 views
0

Я пытаюсь перейти от Moose to Mouse в интересах скорости, но столкнулся с ошибкой showstopper.Миграция с Moose на мышь в Perl - Мышь не выполняется BUILD

Я строй два объекта в том же объеме:

sub scope { 

    my $foo = Foo->new(); 
    my $bar = Bar->new(); 

} 

Метод билда Foo стреляет, но метод BUILD бара нет. Есть идеи? Оба Foo и Bar наследуются от Baz, который наследует Mouse :: Object.

+0

Возможно, вам повезет, если вы пометите это сообщение как perl. – daotoad

ответ

6

Вы действительно не предоставляете достаточный контекст для любого, чтобы отладить это.

Также я беспокоюсь о том, что ваш комментарий переместился с Moose на Mouse «в интересах скорости», не имея лучшего. Там есть несколько пакетов, которые быстрее, чем мышь или лося, для скорости. Профилирование вашего приложения может показать, что вы тратите 99% своего времени на слияние метакласса, доступ к доступу и создание объекта ... в этот момент портирование на мышь может быть оправдано. Может оказаться, что вы тратите 99% своего времени на бизнес-логику, в этот момент портирование на мышь ничего не сделает для вас.

Мышь отличная и имеет несколько конкретных вариантов использования. Я использовал его в производстве, когда знал, что буду работать в среде, в которой Лось традиционно плохо работает (CGI). Однако мышь не является (как утверждают некоторые люди) Moose + FAST ... Мышь больше Moose - Class :: MOP (и все хаки, которые пошли на нормализацию Perl на уровне СС).