domingo, 31 de enero de 2010

Moose de dieta

[English translation]

¿Te parece que Moose es demasiado pesado para tus aplicaciones?

La compilación de los objetos de Moose puede tomar un tiempo considerable durante el arranque de una aplicación, esto podría dar la impresión de que los programas que utilizan Moose son lentos, sin embargo la compilación solamente ocurre al cargar el programa, y dependiendo de la aplicación pude ser que Moose no sea tan pesado como parece.

Un ejemplo de ello es una aplicación en Catalyst (en versiones mayores a la 5.8), cuando arranca se deben compilar todos los objetos hechos en Moose y se siente la diferencia con las versiones anteriores, pero como Catalyst se va a ejecutar durante dias o meses, no importa mucho el tiempo de arranque.

Si la aplicación que quieres desarrollar es un comando que ejecuta una tarea rápida y termina tal vez Moose es muy pesado para tí, sobre todo cuando ejecutas los comandos repetidamente a través de otros comandos como xargs(1) o find(1).

Para los casos donde el tiempo de arranque de la aplicación no se amortiza bien con la ejecución, hay una solución en el CPAN: Mouse.

Mouse es un reemplazo de Moose muy optimizado que permite utilizar la gran mayoría de las características de Moose, pero es mucho más ligero porque esta desarrollado en XS (es decir en C) y se omiten algunas características para aligerar la ejecución.

Según la página del manual de Mouse, Moose solamente falla en el 1% de los tests de  Mouse, haciendo al último muy compatible con el primero, pero la batería de pruebas se ejecuta 400% más rápido y en mi experiencia yo no puedo notar la diferencia entre utilizar Mouse y cosas como Class::Accessor::Fast, y aunque la segunda pudiera ser algo más rápida (algo que no he probado formalmente), tener a disposición un sistema de OOP como Moose definitivamente vale la pena.

Usar Mouse es muy simple, solo hay que cambiar Moose por Mouse, todo lo demás sigue igual.

Las características presentes en Mouse permiten hacer la mayoría de los programas y objetos que necesitas para aplicaciones y herramientas sencillas, y si llegas a necesitar las características adicionales de Moose, como la metaprogramación, Moose es la única opción razonable y no queda otra que pagar el precio de la compilación inicial.

No hay comentarios:

Publicar un comentario